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
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.6模拟总结

前言 45pts 4500 rnk 34 写了200分&#xff0c;挂了155分 好哇&#xff01; 考场 这次状态还真是挺不错的。 开考&#xff0c;先看题。 T1期望&#xff0c;乍一看看不出来啥&#xff0c;似乎挺难的。 T2乍一看特别可做。 T3脑子里只有模拟退火 先去看T2。 被这种类似的题惯…

牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解

文章目录逆序对对序列未曾设想的道路牛客IOI周赛26-提高组逆序对 这种套路之前已经见过几次了&#xff0c;肯定不是模拟操作数列 opt 1 对于i∈[1,l)⋃(r,n]i∈[1,l)\bigcup(r,n]i∈[1,l)⋃(r,n] 逆序对是不影响的 对于i∈(l,r)i∈(l,r)i∈(l,r) 与l/rl/rl/r的情况会反转&…

Frogs HDU - 5514

Frogs HDU - 5514 题意&#xff1a; 有n个青蛙&#xff0c;第 i 个青蛙每次只能够跳 ai​步&#xff0c;现在有m个石头围成一圈&#xff0c;编号为0到m−1&#xff0c;现在青蛙可以围着这个石头组成的圆跳无限次&#xff0c;每跳一次就会占领这个石头&#xff0c;可以无限占领…

Docker最全教程之树莓派和Docker(十六)

前言树莓派&#xff08;Raspberry Pi&#xff09;是一台卡片电脑&#xff08;只有信用卡大小&#xff09;&#xff0c;我们可以使用树莓派做很多事情&#xff0c;比如智能家居的中控、航空器、BT下载器、挖矿机、智能机器人、小型服务器&#xff08;花生壳网站&#xff09;等等…

Codeforces Round #724 (Div. 2) 题解

文章目录A. Omkar and Bad StoryB. Prinzessin der VerurteilungC. Diluc and KaeyaD. Omkar and MediansE. Omkar and ForestF. Omkar and Akmar#724-Div.2A. Omkar and Bad Story 直接set暴力加值&#xff0c;加满300300300个为止 #include <cstdio> #include <se…

2015沈阳区域赛

2015沈阳vj链接 题号题目知识点难度APattern StringBBazinga贪心签到题CMinimum Cut-CutDPagodas裴蜀定理签到题EEfficient TreeFFrogs欧拉函数银牌题GGame of Flying CircusHChessboardITriple二维线段树稳银快金JJohn’s FencesKKykneion asmaLNumber LinkMMeeting最短路&am…

模板:Prufer序列

所谓 Prufer 序列&#xff0c;就是 Prufer 发明的序列。 &#xff08;逃&#xff09; 前言 优雅的神奇魔术。 看名字很高大难&#xff0c;但实际上是高大清&#xff08;小清新&#xff09;。 很简单的建立起树与序列之间的双射&#xff0c;且这个序列的性质非常良好&#xff…

【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置

介绍系列目录&#xff1a;【NET CORE微服务一条龙应用】开始篇与目录在微服务的应用中&#xff0c;统一的认证授权是必不可少的组件&#xff0c;本文将介绍微服务中网关和子服务如何使用统一的权限认证主要介绍内容为&#xff1a;1、子服务如何实现和网关相同的鉴权方式2、接口…

Codeforces Round #725 (Div. 3) 题解

文章目录A. Stone GameB. Friends and CandiesC. Number of PairsD. Another Problem About Dividing NumbersE. Funny SubstringsF. Interesting FunctionG. Gift Set#725-Div.3A. Stone Game 先找到最大值最小值的位置&#xff0c;然后有三种选取&#xff08;两边中走一边/两…

I - Triple HDU - 5517

I - Triple HDU - 5517 题意&#xff1a; 由多重集A和多重集B&#xff0c;<a,b>∈A&#xff0c;<c,d,e>∈B&#xff0c;集合CA * B{<a,c,d>|<a,b>∈A&#xff0c;<c,d,e>∈B and be}。 现在需要你求出有多少个<a,c,d>满足&#xff1a;不…

模板:广义二项式反演/广义容斥(组合数学)

文章目录前言经典容斥原理广义二项式反演/广义容斥min-max 容斥所谓二项式反演&#xff0c;就是对两个项的式子进行反演。 &#xff08;逃&#xff09; 前言 期望和容斥是我的感性二兄弟&#xff01; 之前的容斥我基本也都是靠感性理解做的… 感性理解就会导致&#xff1a;考…

WebApiClient与Asp.net core DI的结合

1 WebApiClient一款基于HttpClient封装&#xff0c;只需要定义c#接口并修饰相关特性&#xff0c;即可异步调用远程http接口的客户端库WebApiClientWebApiClient.ExtensionsWebApiClient.Tools2 Http接口的注册与提供2.1 声明远程端http接口public interface IBaiduApi : IHttpA…

Codeforces Round #717 (Div. 2)

Codeforces Round #717 (Div. 2) CodeForces 1516 题号题目知识点ATit for Tat贪心BAGAGA XOOORRR思维题CBaby Ehab Partitions AgainDCutEBaby Ehab Plays with Permutations

梁迪:源于热爱乐于分享,MVP代表圆桌会议

梁迪《MVP代表圆桌会议》MVP代表圆桌会议&#xff0c;源于热爱乐于分享。来自全国的MVP&#xff08;周岳、苏震巍、蒋金楠、胡浩、卿毅、项斌、刘浩杨、施兆熊、方洁影、方骥、刘鑫、童广林&#xff09;作经验交流。梁 迪微软最有价值专家&#xff08;MVP&#xff09;项目大…

2.7模拟总结

文章目录前言考场题目解析T1T2T3代码T1 forestT2 eulerT3 graph前言 130pts 2010010 终于没有挂分&#xff01; 开心&#xff01; 然而今天的题确实过于阴间…三道题几乎都没法写暴力&#xff0c;爆零场了属于是。 我这个分数都能到rnk4勒。 &#xff08;rnk39->rnk4&#…

基于xlua和mvvm的unity框架

1、框架简介这两天在Github上发现了xlua的作者车雄生前辈开源的一个框架—XUUI&#xff0c;于是下载下来学习了一下。XUUI基于xlua&#xff0c;又借鉴了mvvm的设计概念。xlua是目前很火的unity热更方案&#xff0c;不仅支持纯lua脚本热更&#xff0c;也可以做 C# 代码的bug hot…

A - Tit for Tat CodeForces - 1516A

A - Tit for Tat CodeForces - 1516A 题意&#xff1a; 一个长度为 n 的数组&#xff0c;现在希望你对这个数组进行至多k次操作&#xff1a;在数组中选择 2 个不同的元素&#xff0c;将第一个元素加 1 &#xff0c;然后从第二个元素减 1 。不过他有一个要求&#xff0c;进行操…

Codeforces Round #703 (Div. 2) 题解

文章目录A. Shifting StacksB. Eastern ExhibitionC. Guessing the GreatestD. Max MedianE. Paired PaymentF. Pairs of Paths#703 (Div. 2)A. Shifting Stacks 从左往右构造递增0,1,2...&#xff0c;如果这样都不能递增就肯定无解 雷区&#xff1a;不能用等差数列算个数&am…

AGAGA XOOORRR CodeForces - 1516B

AGAGA XOOORRR CodeForces - 1516B 题意&#xff1a; 给定一个长度为n的序列&#xff0c;对其进行若干次操作&#xff0c;每次操作将某相邻两数变为他们的异或和&#xff08;操作后序列长度减一&#xff09;。问是否可以经过若干次操作&#xff0c;得到一个长度至少为2且所有…

2.8模拟总结

前言 80pts 303020 rnk10 三个暴力分… T2拿虚树玩了半天结果假了qwq 乍一看似乎都挺可做的。 但是一道都做不出来 &#xff08;觉得写考场过程有点流水账&#xff0c;不写了&#xff0c;一些想说的写在对应题目里吧&#xff09; 题目解析 T1 三角查找&#xff08;triangle&…