正题

P2323


题目大意

给你n个点和若干边,每条边有两种代价,问你选择n-1条边使得这n个点连通,且选择第一种代价的边不小于k,让你使代价最大值最小


解题思路

二分答案,然后最小生成树,连接可以连得边,判断是否可行


code

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 20021
using namespace std;
int n,k,m,l,r,xx,yy,kn,nn,p[N],x[N],y[N],c1[N],c2[N],fa[10010];
int find(int x)
{return x==fa[x]?x:fa[x]=find(fa[x]);
}
bool solve(int num)
{memset(p,0,sizeof(p));nn=kn=0;for(int i=1;i<=n;++i)fa[i]=i;for(int i=1;i<=m;++i)//优先选第一种if(c1[i]<=num){xx=find(x[i]);yy=find(y[i]);if(xx!=yy){p[i]=1; fa[xx]=yy;nn++;kn++;}}if(kn<k)return false;if(nn>=n-1)return true;for(int i=1;i<=m;++i)if(c2[i]<=num&&num<c1[i]){xx=find(x[i]);yy=find(y[i]);if(xx!=yy){p[i]=2;fa[xx]=yy;nn++;}}if(nn>=n-1)return true;return false;
}
int main()
{scanf("%d%d%d",&n,&k,&m);m--;for(int i=1;i<=m;++i)scanf("%d%d%d%d",&x[i],&y[i],&c1[i],&c2[i]);l=0;r=30000;while(l<r){int mid=l+r>>1;if(solve(mid))r=mid;else l=mid+1;}printf("%d\n",l);solve(l);for(int i=1;i<=m;++i)if(p[i])printf("%d %d\n",i,p[i]);return 0;
}

【二分】【最小生成树】公路修建问题(P2323)相关推荐

  1. 公路修建问题(二分+最小生成树)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2061  Solved: 1184 Description OI island是一个非常漂亮的岛屿, ...

  2. 【BZOJ1196】公路修建问题,二分+最小生成树

    [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1534 Solved: 879 Description OI isl ...

  3. bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)

    1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2657  Solved: 1511 [Submit][ ...

  4. P1265 公路修建(Prim最小生成树)

    原题链接:公路修建 - 洛谷   思路:其实就是最小生生成树.想想看,如果有2的情况,即三个点ABC,离A最近的点为B,离B最近的点为C,离C最近的点为A.那么把三条边设为a,b,c,即要满足a &l ...

  5. P2323-[HNOI2006]公路修建问题【并查集】

    正题 评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2323 题目大意 有n个点,m条边,对于每条边修二级公路和一级公路修 ...

  6. 洛谷 P1265 公路修建 题解

    1 题面 公路修建 2 分析 这题特别的地方就是边多,5000×50005000\times 50005000×5000的边用kruscal空间不对. 主要空间瓶颈就是边的权是存不下来的,然而krus ...

  7. BZOJ1196: [HNOI2006]公路修建问题

    [传送门:BZOJ1196] 简要题意: 给出n个点,m-1条边,还有一个约束条件k,每条边可以是一级也可以是二级,一级或二级都需要费用,而一级的费用更高,选出n-1条边将n个点连起来,并且n-1条边 ...

  8. 广东外语外贸大学第15届程序设计竞赛 - G LZL的柠檬树 - 二分 + 最小生成树

    Problem G: LZL的柠檬树 Time Limit: 1 Sec  Memory Limit: 128 MB Description LZL的柠檬树长出的柠檬可酸了!如果你也想要这棵酸酸的柠檬 ...

  9. [HNOI2006]公路修建问题 ——二分答案+krukal(蒟弱个人总结)

    题目链接 文章目录 题意: 题解: AC代码 题意: 题目要求我们在n个景点之间建立n-1条公路,在花费尽量少的情况下至少有k条一级公路,求花费最多的一条公路的最小花费 题解: 二分答案+kruska ...

最新文章

  1. 第八课.特征工程与CTR预测
  2. R语言ggplot2可视化改变线图(line plot)中线条的色彩实战
  3. pandas使用pd.concat纵向合并多个dataframe实战:多个dataframe的纵向合并、为纵向合并的多个dataframe设置标识符指定数据来源
  4. 现代化机器学习工具,助数据科学家开展更多工程或业务功能
  5. EEPlat vs saleforce 配置 Knowledge Article 演示样例
  6. .NET Framework开源详细配置
  7. 前端经典面试题之CSS实现三栏布局,左右宽度固定,中间宽度自适应
  8. c语言试卷浙江理工大学杀人案件追踪,浙江理工大学c语言期末考试模拟试卷6 .pdf...
  9. 多线程reactor模型
  10. Pure-ftpd无法连接到服务器 425错误
  11. 晶振为什么不封装进芯片内部?
  12. 微信公众号支付开发(java)实例详解
  13. wps下一页 很好玩!wps中怎么插入欧姆符号
  14. 一起学FPM之 初识SAP_FPM
  15. [BZOJ]1228: [SDOI2009]ED 博弈SG
  16. IAR使用ST-Link下载仿真
  17. maven 导入jar包失败编译代码失败解决方案
  18. java将uuid转换成大写,python生成大写32位uuid代码
  19. 浅谈我对python学习的心得
  20. ubuntu20.04中安装Flatpak,切换数据源

热门文章

  1. Hadoop 中zoo_0基础如何入门HADOOP
  2. oracle日志文件大小规则,在线重做Oracle日志文件大小
  3. 无法初始化java类_myeclip运行java程序不能初始化类 NoClassDefFoundError
  4. iphone桌面横屏设置在哪里_我和我各司其职的桌面们
  5. Redux从入门到进阶,看这一篇就够了!
  6. c语言 大数相加,c/c++开发分享C语言计算大数相加的方法
  7. Zjnu Stadium HDU - 304 加权并查集
  8. 数据结构与算法--数字在排序数组中出现次数
  9. 哈希表添加哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。typedef enum{ HASH_OK, -icoding
  10. word List29