首页 > 其他分享 >CF720B 解题报告

CF720B 解题报告

时间:2024-06-01 19:32:27浏览次数:9  
标签:颜色 idx 删除 报告 CF720B cap int 解题 dis

题目大意

给定一个仙人掌,每条边有颜色,求将原仙人掌断边成树后边权最多有多少不同的。

解题报告

仙人掌有性质为:一条边不会在多个环内。意味着各个环的操作是独立的。考虑统计所有环上的颜色和数量,此部分易实现。

最大化颜色种类数,等价于最小化所失去的颜色数量。
易转化成强制无法删除所有种类颜色,最终剩余几个环无法删除即为要删除多少的颜色。

该部分有若干限制,控制了每种颜色最多用多少,每个环只能删除一个,观察数据范围不超过 \(1e4\),考虑用网络流解决问题。

令 \(S,T\) 为超源和超汇,该模型较为简单,考虑直接建出。

  • \(S\to i\ 连一条容量为 \ all_i-1\ 的边,\\ 表示一共只能删除\ all_i-1\ 条颜色 \ i\ 的边,其中 \ i\ 为颜色\ i\ ,\ all_i\ 为环上边颜色为 \ i\ 的数量\\ (若颜色 \ i\ 有非环边,则容量为 \ all_i\ )\)

  • \(i\to i'连一条容量为1的边,表示每个环只能删除环内颜色的一条边,其中i'为第i'个环\)

  • \(i'\to T\ 连一条容量为1的边,表示一个集合最多删除一条边\)

那么最后求出的最大流即为在不删除颜色的前提下每个环删除一条边的最大环数,则要删除的颜色数即为环的总数量-最大流。

代码

写的好丑

void add(int x,int y,int c){
	to[++idx]=y,from[idx]=x,col[idx]=c,ne[idx]=h[x],h[x]=idx;
}

void dfs(int u,int par){
	dfn[u]=++ti;
	for(int i=h[u];i;i=ne[i]){
		int v=to[i];
		if(v==par) continue;
		if(!dfn[v]){			 
			sta[++top]=i;
			dfs(v,u);
		}
		if(dfn[v]<dfn[u]){
			++tot;
			cnt[tot][col[i]]++;
			vis[i]=vis[i^1]=1;		
			while(from[sta[top]]!=v&&top){
				cnt[tot][col[sta[top]]]++;
				vis[sta[top]]=1;
				vis[sta[top]^1]=1;
				top--;
			}
			vis[sta[top]]=1;
			vis[sta[top]^1]=1;
			cnt[tot][col[sta[top]]]++;
			top--;
		}
		if(sta[top]==i) top--;
	}
}

int all[N],S,T,col_id[N],cur[N],dis[N];

void add_edge(int u,int v,int c){
	to[++idx]=v,cap[idx]=c,ne[idx]=h[u],h[u]=idx;
	to[++idx]=u,cap[idx]=0,ne[idx]=h[v],h[v]=idx;
}

void bfs(){
	memset(dis,-1,sizeof dis);
	queue <int> q;
	q.push(S),dis[S]=0;
	while(q.size()){
		int u=q.front();
		q.pop();
		for(int i=h[u];i;i=ne[i]){
			int v=to[i];
			if(!cap[i]) continue;
			if(!~dis[v]){
				dis[v]=dis[u]+1;
				q.push(v);
			}
		}
	}
}

int DFS(int u,int f){
	if(u==T) return f;
	int tmp=f;
	for(int i=h[u];i;i=ne[i]){
		if(!cap[i]||dis[to[i]]!=dis[u]+1)
			continue;
		int d=DFS(to[i],min(cap[i],f));
		if(d){
			cap[i]-=d,cap[i^1]+=d;
			tmp-=d;
			if(!tmp) break;
		}
		else dis[to[i]]=0;
	}
	return f-tmp;
}

int dinic(){
	int res=0;
	while(1){
		bfs();
		if(!~dis[T]) break;
		res+=DFS(S,2e9);
	}
	return res;
}

void Main(){
//	memset(h,-1,sizeof h);
	n=rd,m=rd;
	int col_all_cnt=0;
	for(int i=1;i<=m;i++){
		int u=rd,v=rd,w=rd;
		if(!no[w]) no[w]=1,col_all_cnt++;
		add(u,v,w),add(v,u,w);
	}
	dfs(1,-1);
	memset(no,0,sizeof no);
	for(int i=2;i<=idx;i++){
		if(vis[i]) continue;
		no[col[i]]=1;
	}
	memset(h,0,sizeof h),idx=1;
	for(int i=1;i<=tot;i++){
		for(auto it:cnt[i])
			all[it.first]+=it.second;
	}
	S=0,T=1,ti=1;
	for(int i=1;i<=m;i++)
		if(all[i])
			col_id[i]=++ti,add_edge(S,ti,all[i]-(!no[i]));
	for(int i=1;i<=m;i++)
		if(!col_id[i])
			col_id[i]=++ti;	
	for(int i=1;i<=tot;i++){
		++ti;
		for(auto it:cnt[i])
			add_edge(col_id[it.first],ti,1);
		add_edge(ti,T,1);
	}
	cout<<col_all_cnt-(tot-dinic())<<endl;
}

标签:颜色,idx,删除,报告,CF720B,cap,int,解题,dis
From: https://www.cnblogs.com/smilemask/p/18226294

相关文章

  • 20211317李卓桐 Exp8 Web安全 实验报告
    Exp8Web安全实验报告实践内容(1)Web前端HTMLWeb前端HTML(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝试注入攻击:利用回显用户名注入HTML及JavaScript。(3......
  • 【链家地产_登录安全分析报告】
    前言由于网站注册入口容易被黑客攻击,存在如下安全问题:暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机器学习能力提......
  • LAMP集群分布式实验报告
    前景:1.技术成熟度和稳定性:LAMP架构(Linux、Apache、MySQL、PHP)自1998年提出以来,经过长时间的发展和完善,已经成为非常成熟和稳定的Web开发平台。其中,Linux操作系统因其高度的灵活性和稳定性而广受欢迎;Apache服务器则以其高性能、稳定性和广泛的平台支持而著称;MySQL数据库以其易......
  • 【专题】2022年智慧城市白皮书报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32732本白皮书对智慧城市的发展历程进行了归纳和总结,分析了发展实践中的新变化和新内涵,并提出了一系列新的智慧城市建设理念、架构和建议。阅读原文,获取专题报告合集全文,解锁文末29份智慧城市相关行业研究报告。其目的在于为建设新型智慧城市提供......
  • 【专题】2022母婴行业洞察报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33430我国出生人口数量在2022年为956万人,比去年减少了10%。多种因素影响了这一趋势,包括育龄人口减少、生育观念改变以及婚育年龄推迟。然而,与此同时,由于母婴人群消费水平不断提高,以及精细化喂养逐渐成为育儿的主流方式,我国母婴市场产业规模持续增长......
  • HTML网页规划与设计【冬季奥林匹克运动会——带报告5200字】HTML+CSS+JavaScript
    ......
  • 墨天轮《2023年中国数据库行业年度分析报告》正式发布!
    为明晰发展脉络,把握未来趋势,墨天轮于5月29日正式发布 《2023年中国数据库年度行业分析报告》。该报告由墨天轮联合业界专家学者共同编写,共330页,旨在梳理和洞察中国数据库行业的发展趋势、技术创新、市场动态以及面临的挑战,为数据库行业的产学研用提供有价值的参考信息,推动行业的......
  • 【专题】2024年中国游戏营销趋势报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35745原文出处:拓端数据部落公众号2023年,全球游戏行业表现卓越,不仅用户规模扩大至33.81亿,行业营收也攀升至1.35万亿人民币,呈现出强劲的增长态势。然而,与此同时,全球游戏创业公司在风险投资上的大幅缩减也揭示了行业面临的某些挑战。阅读原文,获取专题......
  • 20231325 贾罗祁 《Python程序设计》实验四报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验四报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年5月15日必修/选修:公选课1.实验内容Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。课......
  • 【专题】2024年5月电商行业趋势报告合集汇总PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=36310原文出处:拓端数据部落公众号随着数字经济的蓬勃发展,电商行业正以前所未有的速度改变着我们的消费习惯和生活方式。本报告旨在全面梳理和分析2024年电商市场的最新动态、行业趋势以及关键领域的发展状况,为电商从业者、投资者和消费者提供有价......