<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      cogimyunの小窩

      Loading...

      Luogu P14362 [CSP-S 2025] 道路修復(fù) / road 題解

      考慮到對(duì)于 \(k\) 個(gè)鄉(xiāng)鎮(zhèn)明顯可以狀壓枚舉所有鄉(xiāng)鎮(zhèn)選擇的方案,然后暴力計(jì)算目前選擇的鄉(xiāng)鎮(zhèn)與 \(n\) 個(gè)城市的最小生成樹,此時(shí)邊數(shù)時(shí) \(O(kn+m)\) 級(jí)別的,那么時(shí)間復(fù)雜度是 \(O(2^k(kn+m)log\ (kn+m))\) 的,這樣必然會(huì)超時(shí)。我們于是考慮減少邊的個(gè)數(shù),我們不難發(fā)現(xiàn),在最開始只有 \(n\) 個(gè)城市時(shí),\(m\) 條邊中不是最小生成樹的邊在加入了新的鄉(xiāng)鎮(zhèn)后必然也是對(duì)答案沒有貢獻(xiàn)的,所以我們可以不管這些無貢獻(xiàn)的邊,將每次求最小生成樹的邊數(shù)降到 \(O(kn)\) 級(jí)別的。但此時(shí)我們又發(fā)現(xiàn)如果每次求最小生成樹時(shí)對(duì)所有邊進(jìn)行排序,時(shí)間復(fù)雜度比較劣,我們可以考慮預(yù)處理出每個(gè)城鎮(zhèn)的 \(n\) 條邊的序列使其有序,這樣每次求最小生成樹時(shí)便可以使用歸并排序使排序復(fù)雜度更優(yōu),此時(shí)時(shí)間復(fù)雜度是 \(O(2^kkn \alpha(n))\) 的。

      #include<bits/stdc++.h>
      using namespace std;
      int n,m,k,f[10015],c[15]; 
      struct node{
      	int u,v,w;
      }s[1000005],nw[10005],init[15][10005],t[2][120005];
      long long ans=0;
      int getf(int x){return (x==f[x])?x:f[x]=getf(f[x]);}
      int main(){
      	cin>>n>>m>>k;
      	for(int i=0;i<m;i++)cin>>s[i].u>>s[i].v>>s[i].w;
      	sort(s,s+m,[](node x,node y){return x.w<y.w;});
          int tmp=0,p=0;
          for(int i=1;i<=n;i++)f[i]=i;
          while(tmp<n-1){
              int fx=getf(s[p].u),fy=getf(s[p].v);
              if(fx!=fy){
                  f[fx]=fy;
                  ans+=s[p].w;
                  tmp++;
                  nw[tmp]=s[p];
              }
              p++;
          }
          for(int i=1;i<=k;i++){cin>>c[i];for(int j=1;j<=n;j++){cin>>init[i][j].w;init[i][j].u=n+i;init[i][j].v=j;}sort(init[i]+1,init[i]+1+n,[](node x,node y){return x.w<y.w;});}
          for(int i=1;i<(1<<k);i++){
              for(int j=1;j<=n+k;j++)f[j]=j;
              int sum=0,id=0;
              int num=n+__builtin_popcount(i),cnt=0,kk=1;
              long long anss=0;
              for(int j=1;j<n;j++)t[id][++sum]=nw[j];
              for(int j=1;j<=k;j++){
                  if(!((1<<(j-1))&i))continue;
                  anss+=c[j];
                  id^=1;
                  int l=1,r=1,summ=0;
                  while(l<=sum&&r<=n){
                      if(t[id^1][l].w<=init[j][r].w)t[id][++summ]=t[id^1][l++];
                      else t[id][++summ]=init[j][r++];
                  }
                  while(l<=sum)t[id][++summ]=t[id^1][l++];
                  while(r<=n)t[id][++summ]=init[j][r++];
                  sum=summ;
              }
              while(cnt<num-1){
                  int fx=getf(t[id][kk].u),fy=getf(t[id][kk].v);
                  if(fx!=fy){
                      f[fx]=fy;
                      anss+=t[id][kk].w;
                      cnt++;
                  }
                  kk++;
              }
              ans=min(ans,anss);
          }
          cout<<ans;
      	return 0;
      }
      
      
      posted @ 2025-11-03 16:46  cogimyun  閱讀(11)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲国产午夜精品理论片| 久久99久国产精品66| 国产黄色大片网站| 精品久久丝袜熟女一二三| 欧美日韩国产图片区一区| 日韩人妻少妇一区二区三区| 日韩精品中文字幕无码一区| 久热久热久热久热久热久热| 国产午夜福利视频合集| 日韩人妻无码精品久久| 国产精品白丝久久AV网站| 欧美久久精品一级c片免费| 人妻中文字幕精品系列| 国产精品毛片久久久久久久| 91午夜福利在线观看精品| 国产高清在线不卡一区| 精品人妻中文字幕在线| 欧美精品一产区二产区| 日本熟妇XXXX潮喷视频| 欧美变态口味重另类在线视频| 日韩av不卡一区二区在线| 国外av片免费看一区二区三区| 国产黄色一级片在线观看| 欧美特级午夜一区二区三区 | 国产99久久精品一区二区| 羞羞影院午夜男女爽爽免费视频| 于都县| 中文无码热在线视频| 色偷偷亚洲男人的天堂 | 剑阁县| 欧美不卡无线在线一二三区观| 久久人人妻人人爽人人爽| 亚洲综合小说另类图片五月天| 国产99视频精品免费视频6| 欧美最猛黑人xxxx | 最新中文字幕国产精品| 中文字幕日韩有码国产| 人人澡超碰碰97碰碰碰| 香蕉乱码成人久久天堂爱| 欧美日本激情| 色一情一区二区三区四区|