首页 > 其他分享 >Min-Max 容斥 做题记录

Min-Max 容斥 做题记录

时间:2024-10-17 13:44:33浏览次数:7  
标签:q1 q2 Min int Max 容斥 fa maxn find

给定一张 \(n\) 个点 \(m\) 条边的边带权简单连通无向图。现需要将其的每个结点染成黑色或白色。
定义两个结点的距离为这两点间所有路径的边权之和的最小值。
对于一种染色的方式,定义一个结点 \(u\) 的代价为:对于所有与 \(u\) 异色的点 \(v\),\(u\) 和 \(v\) 的距离的最小值。如果不存在这样的点,那么代价为 \(10^{100}\)。
该染色方式的代价为所有结点的代价的最大值。
您需要构造一种染色方式,使其最小化代价。

\(2\le n \le 5\times 10^5\),图简单连通。

注意到有一档子任务,\(m=n-1\),是一颗树状图的情况。我们注意到这是只能一层染一个颜色,此时答案为 \(\max_{i=1}^{m} val_i\)。所以我们在普通情况则是先拿出一个最小生成树,答案就是最小生成树中的最大值。时间复杂度 \(O(m\log m)\)。

点击查看代码
int n,m;
struct edge {int u,v,d; };
vector<int>G[maxn];
edge x[maxn];
bool vis[maxn],ans[maxn];
bool cmp(edge x,edge y) {
	return x.d<y.d;
}
mt19937 rd(time(NULL));
void dfs2(int x) {
	queue<int> q1,q2;
	q1.push(x),q2.push(0);
	vis[x]=1;
	while(!q1.empty()) {
		int u=q1.front(),val=q2.front();
		q1.pop(),q2.pop();
		ans[u]=val;
		for(auto v:G[u]) {
			if(!vis[v]) {
				vis[v]=1;
				q1.push(v),q2.push((val^1));
			}
		}
	}
}
int fa[maxn];
int find(int x) {return x==fa[x]?x:(fa[x]=find(fa[x])); }
signed main() {
	in2(n,m);
	For(i,1,m) {
		int u,v,d;
		in3(u,v,d);
		x[i]={u,v,d};
	}
	sort(x+1,x+m+1,cmp);
	For(i,1,n) fa[i]=i;
	For(i,1,m) {
		auto [u,v,d]=x[i];
		if(find(u)!=find(v)) {
//			cout<<u<<' '<<v<<'\n';
			fa[find(u)]=find(v);
			pb(G[u],v);
			pb(G[v],u);
		}
	}
	dfs2(1);
	For(i,1,n) cout<<ans[i];
	return 0;
}

标签:q1,q2,Min,int,Max,容斥,fa,maxn,find
From: https://www.cnblogs.com/CodingGoat/p/18472054

相关文章

  • Maximum Control (medium)
    算法转化题意,即为求树上最长不重链覆盖长链剖分显然可以使用长链剖分的思想,直接剖分后贪心的求最大链即可代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintmaxn=1e5+5;intn,u,v,rt,d[maxn],son[maxn],h[maxn];inth......
  • minio多节点
    1.在所有节点安装miniowgethttps://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241002175041.0.0_amd64.deb-Ominio.debdpkg-iminio.deb2.修改所有节点的hosts文件,将主机名设置为连续值vi/etc/hosts192.168.1.101minio1192.168.1.102minio23......
  • HIAST Collegiate Programming Contest 2024(非完全题解)
    C题HZY做的,等他补题解//#pragmaGCCoptimize("O3,unroll-loops")//#pragmaGCCtarget("avx2,bmi,bmi2,lzcnt,popcnt")////如果在不支持avx2的平台上将avx2换成avx或SSE之一#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecon......
  • 内存管理-31-系统内存统计-6-dumpsys meminfo
     一、dumpsysmeminfo命令数据格式Exynos:/#dumpsysmeminfoApplicationsMemoryUsage(inKilobytes):Uptime:9463100Realtime:9463100TotalPSSbyprocess:452,701K:com.sumsung.speech(pid2297)266,607K:system(pid936)79,088K:vendor.q......
  • Mininet问题合集
    我的环境:Ubuntu22.04.5LTSliu@liu-Ubuntu-Desktop:~/桌面$ovs-vsctl-Vovs-vsctl(OpenvSwitch)2.17.9DBSchema8.3.0liu@liu-Ubuntu-Desktop:~/桌面$mn--version2.3.0liu@liu-Ubuntu-Desktop:~/桌面$python3Python3.10.12(main,Sep112024,15:47:36)[GC......
  • 怎么用admin后台修改网站?
    要使用admin后台修改网站,通常可以按照以下步骤操作:登录后台管理系统:打开网站的管理后台URL(例如 http://yourwebsite.com/admin)。输入管理员用户名和密码进行登录。进入管理界面:登录后,你会看到后台管理界面,这里通常有各种管理功能和菜单项。选择要修改的内容:......
  • 模板-自动取模整型mint
    输入为int64类型,底层用int64表示,每次运算后自动取模。template<intMOD>structMInt{i64x;intnorm(i64u)const{u%=MOD;if(u<0)u+=MOD;returnu;}MInt(i64v=0):x(norm(v)){}intval()const{returnx;}MIntoperator-()const{returnMInt......
  • 基于MinIO配置bucket,用于文件下载和浏览
    文章目录引言I配置文件浏览访问权限配置文件浏览访问地址文件下载地址II知识扩展MinIO内置访问策略只读策略只写策略读写策略diagnosticsconsoleAdmin引言需求:文件下载用于OTA升级,文件浏览用于产品展示。实现方案:基于MinIO配置bucket访问权......
  • SQL优化 INDEX RANGE SCAN (MIN/MAX)
    问题:根据STATUS='TABLE',查询最大值LAST_DDL_TIME,STATUS='TABLE' 符合条件记录数超过几十万,怎么优化?sql如下:SELECTTO_CHAR(MAX(LAST_DDL_TIME),'YYYY-MM-DDHH24:MI:SS')fromt1015whereSTATUS='TABLE';模拟测试:1.创建测试表createtablet1015assele......
  • 怎么修改网站admin密码?网站后台修改器?
    修改网站管理员(admin)密码的方法取决于你使用的网站平台或CMS(内容管理系统)。以下是一些常见平台的修改方法:1.WordPress通过WordPress后台:登录到WordPress管理面板。进入“用户”>“所有用户”。找到管理员账户,点击“编辑”。在“账户密码”部分输入新密码。点击“更新......