日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Meeting HDU - 5521

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Meeting HDU - 5521 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Meeting HDU - 5521

題意:

一共有n個點,有m個塊,每個塊內有Si個點,塊內點彼此到達費用為wi,兩個人分別位于1和n號塊,兩者同時出發問最短時間遇到是多少?在哪些地方可以遇到?
ΣSi<=106

題解:

題意很明確,我們需要先建邊,然后從點1開始跑最短路得到dis[i],再從點n跑最短路得到dist[i]
dis[i]表示第1個點到第i個點的最短距離
dist[i]表示第n個點到第i個點的最短距離
答案就是minn= min(max(dis[i],dist[i]),minn)
因為兩者同時出發,所以時間取長者,然后找最短時間所以取min
題目難度在于ΣSi<=106,如果你按照塊內所有點兩兩建邊,那復雜度肯定暴力。(考慮極端情況所有點在一個塊內),那怎么解決?我們可以在塊外建議一個新點x,讓塊內所有點與其相連,邊權不變,這樣任意兩個點都可以通過這個x中間點實現連接,這樣就巧妙建邊(會網絡流的應該好理解,相當于一個人造源點)

建議不要用ios::sync_with_stdio(0);玄學錯誤,導致我wa了八次

代碼:

#include <bits/stdc++.h> using namespace std; #define asd cout<<" SB "<<endl; #define ll long long #define ull unsigned long long #define INF 0x3f3f3f3f const int maxn=1e6+9; struct node{int v;int c;node(int v=0,int c=0):v(v),c(c){}bool operator<(const node &r)const{return c>r.c;} }; struct cmp{int x;cmp(int x=0):x(x){}bool operator<(const cmp &r)const{return x>r.x;} }; struct Edge{int v,cost;Edge(int _v=0,int _cost=0):v(_v),cost(_cost){} }; vector<Edge>E[maxn]; bool vis[maxn]; int dist[maxn]; int dis[maxn]; void dij(int n,int start){memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++)dist[i]=INF;priority_queue<node>q;while(!q.empty())q.pop();dist[start]=0;q.push(node(start,0));node tmp;while(!q.empty()){tmp=q.top();q.pop();int u=tmp.v;if(vis[u])continue;vis[u]=1;for(int i=0;i<E[u].size();i++){int v=E[tmp.v][i].v;int cost=E[u][i].cost;if(!vis[v]&&dist[v]>dist[u]+cost){dist[v]=dist[u]+cost;q.push(node(v,dist[v]));}}} } int main(){ios::sync_with_stdio(0);int t;cin>>t;int cas=0;while(t--){memset(E,0,sizeof(E));int n,m;cin>>n>>m; // for(int i=1;i<=n;i++)dis[i]=INF;int tot=0;for(int i=1;i<=m;i++){int w;cin>>w;int S;cin>>S;for(int j=1;j<=S;j++){int x;cin>>x;// printf("u=%d v=%d w=%d\n",n+i,x,w);E[n+i].push_back(Edge(x,w));E[x].push_back(Edge(n+i,w));}} // for(int i=n+1;i<=n+m;i++){ // for(int j=i+1;j<=n+m;j++){ // printf("u=%d v=%d w=%d\n",i,j,0); // E[i].push_back(Edge(j,0)); // E[j].push_back(Edge(i,0)); // } // }dij(n+m,1);for(int i=1;i<=n;i++)dis[i]=dist[i];dij(n+m,n);int minn=INF;for(int i=1;i<=n;i++)minn=min(minn,max(dis[i],dist[i]));if(minn==INF){printf("Case #%d: Evil John\n",++cas);continue;}priority_queue<cmp>q;for(int i=1;i<=n;i++){if(max(dis[i],dist[i])==minn){q.push(i);}}bool f=0;printf("Case #%d: %d\n",++cas,minn/2);while(!q.empty()){if(f==0)printf("%d",q.top().x);else printf(" %d",q.top().x);q.pop();f=1;}printf("\n");}return 0; } /* 2 5 4 1 3 1 2 3 2 2 3 4 3 2 1 5 3 3 3 4 5 3 1 1 2 1 2 */

總結

以上是生活随笔為你收集整理的Meeting HDU - 5521的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产无毛av| 久久久久97国产 | 嫩草影院在线视频 | 蜜臀久久精品久久久用户群体 | 青青成人在线 | 丁香花在线影院观看在线播放 | 成人依人 | 黄网站在线观 | 国产免费一区二区三区在线观看 | 日本毛片在线观看 | 激情综合色 | 日啪| 人人人妻人人澡人人爽欧美一区 | 久久不卡免费视频 | 不卡的一区二区 | 开心激情五月网 | a天堂中文在线观看 | 免费黄在线 | 欧美丰满艳妇bbwbbw | 国产精品美女久久久免费 | 国产高潮国产高潮久久久 | 亚洲精品久久久久国产 | 国产的av | 都市激情亚洲 | 欧美色图亚洲自拍 | 亚洲av人人夜夜澡人人 | 国产性生活 | 99re免费视频精品全部 | 久久99久久久 | 国产一区二区三区四区五区六区 | 一区二区三区四区久久 | 日韩在线视频不卡 | 在线观看黄网 | 免费在线观看网址入口 | 成人黄色小视频在线观看 | 久久久久久久久免费视频 | 日韩免费网址 | 欧美日韩亚洲视频 | 风韵多水的老熟妇 | 国产黄色网络 | 日本韩国欧美一区 | 欧美视频一区在线 | 精品人妻无码一区二区三区蜜桃一 | 欧美日韩三 | 高潮一区二区三区 | 已满十八岁免费观看全集动漫 | 国产.com| 91九色成人 | 精品无码免费视频 | av污| 国产精品久久久爽爽爽麻豆色哟哟 | 国产剧情一区二区三区 | 在线观看国产黄色 | 老外一级黄色片 | 精品人妻一区二区三区蜜桃 | 欧美不卡视频在线观看 | 亚洲AV成人精品 | 午夜激情在线播放 | 久久99久久99精品免观看软件 | 性欧美丰满熟妇xxxx性仙踪林 | 中文字幕日本在线观看 | av爱爱爱 | 亚洲奶水xxxx哺乳期 | 天天噜夜夜噜 | 97青草| 69国产视频 | 91精品国产色综合久久不卡蜜臀 | a天堂在线观看 | 啪在线视频| 精品乱码一区二区三区 | 亚洲女人在线 | 初高中福利视频网站 | 黄色片毛片 | 制服丝袜在线第一页 | 国产日韩精品一区二区三区在线 | 40一50一60老女人毛片 | 成人毛片在线播放 | 国产精品性色 | 不卡视频免费在线观看 | 久久久久久久久影院 | 日韩爱爱网 | 中出在线播放 | 国产乱淫av片杨贵妃 | 这里只有精品视频 | 一个色亚洲 | 西野翔之公侵犯中文字幕 | 国产精品丝袜一区二区 | 欧美视频一 | 欧美精品a区 | 亚洲精品久久夜色撩人男男小说 | 91丨国产丨白丝 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 久久青青操 | 国产精品毛片久久久久久久 | 久久久久久国产免费a片 | 久草在在线 | 亚洲三级中文字幕 | 女人做爰全过程免费观看美女 | 手机看片欧美日韩 |