bzoj1196 [HNOI2006]公路修建问题
题目链接
二分答案+kruskal最小生成树判断
二分费用,用满足费用要求的边来生成树,判断能否生成树
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<string> 5 #include<cstring> 6 #include<cmath> 7 #include<algorithm> 8 #include<ctime> 9 #include<queue> 10 #include<stack> 11 #include<map> 12 #include<set> 13 using namespace std; 14 struct bian 15 { 16 int u,v,c1,c2; 17 }bi[20020]; 18 int getint() 19 { 20 int ret=0;char ch=getchar(); 21 while(ch<'0'||ch>'9')ch=getchar(); 22 while(ch>='0'&&ch<='9')ret*=10,ret+=ch-'0',ch=getchar(); 23 return ret; 24 } 25 int n,k,m,ans,fa[10010]; 26 int find(int x) 27 { 28 return x==fa[x]?x:fa[x]=find(fa[x]); 29 } 30 bool check(int x) 31 { 32 int sum=0; 33 for(int i=1;i<=n;i++)fa[i]=i; 34 for(int i=1;i<=m;i++) 35 { 36 if(bi[i].c1>x)continue; 37 int q=find(bi[i].u),w=find(bi[i].v); 38 if(q!=w) 39 fa[q]=w,sum++; 40 } 41 if(sum<k)return 0; 42 for(int i=1;i<=m;i++) 43 { 44 if(bi[i].c2>x)continue; 45 int q=find(bi[i].u),w=find(bi[i].v); 46 if(q!=w) 47 fa[q]=w,sum++; 48 } 49 if(sum!=n-1)return 0; 50 return 1; 51 } 52 int main() 53 { 54 n=getint(),k=getint(),m=getint();m--; 55 for(int i=1;i<=m;i++) 56 bi[i].u=getint(),bi[i].v=getint(),bi[i].c1=getint(),bi[i].c2=getint(); 57 int l=1,r=30000; 58 while(l<=r) 59 { 60 int mid=(l+r)>>1; 61 if(check(mid))ans=mid,r=mid-1; 62 else l=mid+1; 63 } 64 printf("%d",ans); 65 return 0; 66 }
转载于:https://www.cnblogs.com/HugeGun/p/5151628.html
bzoj1196 [HNOI2006]公路修建问题相关推荐
- BZOJ1196: [HNOI2006]公路修建问题
[传送门:BZOJ1196] 简要题意: 给出n个点,m-1条边,还有一个约束条件k,每条边可以是一级也可以是二级,一级或二级都需要费用,而一级的费用更高,选出n-1条边将n个点连起来,并且n-1条边 ...
- 【BZOJ1196】公路修建问题,二分+最小生成树
[HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1534 Solved: 879 Description OI isl ...
- bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)
1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2657 Solved: 1511 [Submit][ ...
- 1196: [HNOI2006]公路修建问题 - BZOJ
Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织 ...
- [HNOI2006]公路修建问题 ——二分答案+krukal(蒟弱个人总结)
题目链接 文章目录 题意: 题解: AC代码 题意: 题目要求我们在n个景点之间建立n-1条公路,在花费尽量少的情况下至少有k条一级公路,求花费最多的一条公路的最小花费 题解: 二分答案+kruska ...
- 【BZOJ 1196】[HNOI2006]公路修建问题
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二分最后选的边中的最大值是多少. mid 则所有边权小于等于mid的边都可以用了. 那么我们要怎么选择呢? ->优先选择一级的 ...
- P2323-[HNOI2006]公路修建问题【并查集】
正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2323 题目大意 有n个点,m条边,对于每条边修二级公路和一级公路修 ...
- 洛谷 P1265 公路修建 题解
1 题面 公路修建 2 分析 这题特别的地方就是边多,5000×50005000\times 50005000×5000的边用kruscal空间不对. 主要空间瓶颈就是边的权是存不下来的,然而krus ...
- P1265 公路修建(Prim最小生成树)
原题链接:公路修建 - 洛谷 思路:其实就是最小生生成树.想想看,如果有2的情况,即三个点ABC,离A最近的点为B,离B最近的点为C,离C最近的点为A.那么把三条边设为a,b,c,即要满足a &l ...
最新文章
- 121-Best Time to Buy and Sell Stock
- 1_HelloWorld
- 大工14春《计算机应用基础》在线测试2,大工14春《计算机应用基础》在线测试2...
- .net引用System.Data.SQLite操作SQLite
- 元器件基础知识--排阻命名
- 学习Apache Camel –实时索引推文
- Android学习随笔 -- draw9patch的使用
- Enterprise Suse运维
- Gram-Schmidt正交化
- SQL Server误区30日谈-Day28-有关大容量事务日志恢复模式的误区
- Idea中@Autowired 黄色波浪线问题,注入类显示红色波浪线,去除重复代码导致的波浪黄线,去除xml文件里sql语句的黄色行背景色,问题解决
- prince2证书有含金量吗?
- 数字图像处理_Matlab——车牌识别分析
- AirtestIDE1.2.13的安卓手机设置自动初始化功能
- MSP430 IO操作
- 2015-4-12分享的PDF
- 2010年5月27日俱乐部晚场活动,“iPhone应用成功经验分享”主题研讨活动
- 仅仅允许本校报考?多所985/211大学计算机第二学士学位
- 基于android平台多媒体播放器的设计与实现,基于Android的多媒体音乐播放器设计论文...
- 数据可视化之交通可视化