首页 > 其他分享 >【考后总结】6 月西安多校模拟赛 5

【考后总结】6 月西安多校模拟赛 5

时间:2023-06-24 19:48:19浏览次数:45  
标签:cnt 考后 bel int 多校 read maxn 模拟 deg

6.24 冲刺国赛模拟 24

T2 简单图论题

原题:Gym-104053C Customs Controls 2

构造题。

这个限制可以进一步加强到对于每个节点 \(u\),\(1\to u\) 的路径权值都相等,定义为 \(d_u\)。

于是对 \(u\) 连边的两个节点的 \(d\) 一定相等,进而可以把所有相等的缩到一起,且这些点直接不能连边(点权至少是 \(1\)),这样可以对处理过后的图跑最长路,如果存在环一定无解。

最后的答案就是任意找一条连向 \(v\) 的边 \((u,v)\),其中 \(w_v=d_v-d_u\)。

点击查看代码
int t;
int n,m;
vector<int> E1[maxn],E2[maxn],E3[maxn];
int bel[maxn],id[maxn];
int find(int x){
	if(x==bel[x]) return x;
	return bel[x]=find(bel[x]);
}
int deg[maxn];
int f[maxn],g[maxn],cnt;
int main(){
	freopen("dag.in","r",stdin);
	freopen("dag.out","w",stdout);
	t=read();
	while(t--){
		n=read(),m=read();
		for(int i=1;i<=n;++i) E1[i].clear(),E2[i].clear(),E3[i].clear();
		for(int i=1;i<=m;++i){
			int u=read(),v=read();
			E1[u].push_back(v),E2[v].push_back(u);
		}
		for(int i=1;i<=n;++i) bel[i]=i,id[i]=0,deg[i]=0; 
		for(int u=1;u<=n;++u){
			for(int i=1;i<(int)E2[u].size();++i){
				int v1=E2[u][i-1],v2=E2[u][i];
				int f1=find(v1),f2=find(v2);
				// printf("%d %d %d %d\n",v1,v2,f1,f2);
				bel[f2]=f1;
			}
		}
		int tot=0;
		for(int i=1;i<=n;++i){
			// printf("%d %d\n",i,find(i));
			if(find(i)==i) id[i]=++tot;
		}
		bool chk=1;
		for(int u=1;u<=n;++u){
			for(int v:E1[u]){
				if(find(u)==find(v)) chk=0;
				else{
					E3[id[find(u)]].push_back(id[find(v)]);
					++deg[id[find(v)]];
				}
			}
		}
		queue<int> q;
		if(deg[1]) chk=0;
		f[1]=1;
		q.push(1);
		cnt=0;
		while(!q.empty()){
			int u=q.front();
			q.pop();
			++cnt;
			for(int v:E3[u]){
				f[v]=f[u]+1;
				--deg[v];
				if(!deg[v]) q.push(v);
			}
		}
		if(cnt<tot) chk=0;
		g[1]=1;
		for(int v=2;v<=n;++v){
			int u=E2[v][0];
			g[v]=f[id[find(v)]]-f[id[find(u)]];
		}
		if(!chk) printf("No\n");
		else{
			printf("Yes\n");
			for(int i=1;i<=n;++i) printf("%d ",g[i]);
			printf("\n");
		}
	}
	return 0;
}

标签:cnt,考后,bel,int,多校,read,maxn,模拟,deg
From: https://www.cnblogs.com/SoyTony/p/Multiple_School_Simulation_Problems_in_Xian_June_5.html

相关文章

  • 【考后总结】6 月西安多校模拟赛 4
    6.21冲刺国赛模拟22T1跳跃不妨看作两只青蛙从相同起点出发且跳跃次数相同,设\(f_{i,j,k}\)为两只青蛙分别在\(i,j\)位置,且相差步数\(k\)。由于需要记录相邻位置对答案贡献,我们在要求必须严格按照升序对处理状态,也就是必须保证当前跳跃的一只青蛙落点在另一只青蛙更前面,且......
  • [ARM 汇编]高级部分—性能优化与调试—3.4.3 使用模拟器进行调试与测试
    在ARM汇编程序开发过程中,使用模拟器(emulator)进行调试和测试是一种非常有效的方法。模拟器可以在不同的处理器上测试代码,帮助我们发现潜在的问题,并提供丰富的调试功能。本节将介绍如何使用QEMU(一个流行的开源模拟器)进行ARM汇编程序的调试和测试。安装QEMU首先,我们需要安装QEMU......
  • Unity3D:模拟类
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生模拟类设备模拟器提供模拟类,可用于测试响应设备模拟器中特定于设备的行为的代码。以下模拟类位于UnityEngine.Device命名空间中:应用屏幕系统信息这些模拟类具有与其常规UnityEngine命名空间对应项相同......
  • GPT-4零失误通关大厂模拟面试,offer拿到手软?与AGI首次接触
    “GPT-4可被视作AGI(通用人工智能)的早期版本。”如若从他人口中说出,或许是无稽之谈——但是由微软雷蒙德研究院机器学习理论组负责人万引大神SébastienBubeck与2023新视野数学奖得主RonenEldan、2023新晋斯隆研究奖得主李远志、2020斯隆研究奖得主YinTatLee等科学家共同撰写的......
  • 【杂题乱写】6 月西安多校 DP 专题训练
    这也太难了!这也太难了!这也太难了!AUOJ-607UR#20跳蚤电话加点操作太抽象,改成删点,每次可以删一个叶子,或者删一个只有一个父亲和一个儿子的节点。算方案还带顺序,子树间再算多重集组合数不方便,不如直接算任意顺序删点最后合法删完的概率。设\(f_u\)为按任意顺序删点删完\(u\)......
  • Unity3D:模拟器视图
    推荐:将NSDT场景编辑器加入你的3D工具链3D工具集:NSDT简石数字孪生模拟器视图“模拟器”视图在模拟的移动设备上显示应用程序。使用它来查看应用程序与该设备的屏幕形状、分辨率和方向的显示方式。模拟器视图的屏幕截图使用模拟器视图若要打开模拟器视图,请执行下列操作之一:......
  • 模拟赛碎碎念
    P1285队员分组模拟赛出了一道只用求较小的一个组的人数的这题。赛时编了一个时间复杂度卡满可能会被卡常的做法,大概是这样的:如果给定的图是完全图,那么答案就是\(\lfloor\frac{n}{2}\rfloor\),否则就一定存在点对\((u,v)\)满足\(u\),\(v\)之间没有边相连。将\(u\)塞进点集......
  • 如何实现带有颜色文本的日志框_使用HTMLEditor模拟
    如何实现带有颜色文本的日志框_使用HTMLEditor模拟HTMLEditor是一个强大的html编辑器,可以方便的编辑各种html元素并得到html文本。比之TextArea要强大很多,因为TextArea中所有的文本只能有一种样式。如果想要实现一个日志框,其中普通信息、警告信息、错误信息使用不同......
  • winform控件开发一之复合控件开发(1)模拟量显示1
    winform控件开发包括三种类型复合控件,又称为组合控件扩展控件自定义控件复合控件:复合控件,又称为组合控件,一般是将现有控件功能进行组合形成一个新的控件。举例:设计一个工控中常用的模拟量控件,可以显示变量的名称,变量值和单位,如下图所示 在这个复合空间中,左边使用一个l......
  • IS220PAICH2A 336A4940CSP11通用电气模拟输入输出模块
    IS220PAICH2A336A4940CSP11通用电气模拟输入输出模块IS220PAICH2A336A4940CSP11通用电气模拟输入输出模块  但是传统的以太网是一种商用网络,要应用到工业控制中还存在一些问题,主要有以下几个方面。1、存在实时性差,不确定性的问题传统的以太网采用了CSMA/CD的介质......