博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1196[HNOI2006]公路修建问题
阅读量:6627 次
发布时间:2019-06-25

本文共 822 字,大约阅读时间需要 2 分钟。

题意:

修n-1条公路将n个点连通,每个点可建一级公路也可建二级公路,要求一级公路必须有k条,要求花费最多的公路花费最少。

题解:

首先二分最大花费,接着判定:先在不产生环的前提下(用并查集维护)让每条路尽量修一级公路,如果最后无法构成树则考虑修二级公路。

代码:

1 #include 
2 #include
3 #include
4 #define inc(i,j,k) for(int i=j;i<=k;i++) 5 #define maxn 10500 6 using namespace std; 7 8 int n,k,m,u[maxn*2],v[maxn*2],c1[maxn*2],c2[maxn*2],mx,fa[maxn],cnt; 9 int find(int x){
return x==fa[x]?x:fa[x]=find(fa[x]);}10 bool check(int lim){11 inc(i,1,n)fa[i]=i; cnt=0;12 inc(i,1,m)if(c1[i]<=lim){13 int x=find(u[i]),y=find(v[i]); if(x==y)continue; fa[y]=x; cnt++;14 }15 if(cnt
>1;27 if(check(mid))ans=mid,r=mid-1;else l=mid+1;28 }29 printf("%d",ans); return 0;30 }

20160531

转载于:https://www.cnblogs.com/YuanZiming/p/5689438.html

你可能感兴趣的文章
关于informatica的Dynamic Lookup组件使用中遇到的一个问题的思考
查看>>
[转]模拟频率与数字频率
查看>>
转 Spring Security 简介
查看>>
DP ZOJ 3735 Josephina and RPG
查看>>
数位DP GYM 100827 E Hill Number
查看>>
有关SQLite的substr函数的笔记
查看>>
Kafka 配置参数汇总及相关说明
查看>>
Joel在耶鲁大学的演讲
查看>>
【C语言】类型限定词
查看>>
TypeScript 素描-变量声明
查看>>
AMF序列化为对象和AMF序列化为二进制字节流
查看>>
Python3 学习
查看>>
python之路day12--装饰器的进阶
查看>>
[LeetCode] Two Sum III - Data Structure Design
查看>>
课后作业-阅读任务-阅读笔记-4
查看>>
【转】ARC下dealloc过程及.cxx_destruct的探究
查看>>
NGUI的窗体的推动和调节大小(drag object和drag resize object)
查看>>
关于WordPress中字体加载慢的问题解决方案(转)
查看>>
PhotoShop常用快捷键
查看>>
关于 MySQL LEFT JOIN 你可能需要了解的三点
查看>>