BZOJ 1196 二分答案+并查集
http://www.lydsy.com/JudgeOnline/problem.php?id=1196
题目大意:n个城市,m-1条路,每条路有一级公路和二级公路之分,你要造n-1条路,一级公路至少要造k条,求出所造路的最大所需的val的最小值.
思路:首先我们一定要明确这个不是一题求所有花费的最小值的问题。然后我们只要二分答案就可以了。最后注意一下条件的拜访即可。
//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
const int maxn = + ;
const int inf = 0x3f3f3f3f;
struct Edge{
int u, v, val1, val2;
Edge(int u = , int v = , int v1 = , int v2 = ): u(u), v(v), val1(v1), val2(v2){}
bool operator < (const Edge &a) const{
if (val1 != a.val1) return val1 < a.val1;
return val2 < a.val2;
}
}e[maxn * ];
int n, k, m;
int par[maxn];
int pfind(int x){
if (par[x] == x) return x;
return par[x] = pfind(par[x]);
} bool judge(int midval){
for (int i = ; i <= n; i++) par[i] = i;
int cnt1 = , cnt = ;
for (int i = ; i <= m - ; i++){
Edge a = e[i];
int pu = pfind(a.u), pv = pfind(a.v);
if (pu == pv) continue;
if (a.val1 <= midval) cnt1++, cnt++, par[pu] = pv;
else if (a.val2 <= midval) cnt++, par[pu] = pv;
}
if (cnt == n- && cnt1 >= k) return true;
return false;
} int main(){
scanf("%d%d%d", &n, &k, &m);
int lb = , rb = ;
for (int i = ; i <= m - ; i++){
int u, v, v1, v2;
scanf("%d%d%d%d", &u, &v, &v1, &v2);
e[i] = Edge(u, v, v1, v2);
}
sort(e + , e + m);
while (lb < rb){
int mid = lb + (rb - lb) / ;
if (judge(mid)){
rb = mid;
}
else {
lb = mid + ;
}
}
printf("%d\n", lb);
return ;
}
/*
3 1 3
1 2 11 4
2 3 10 2
*/
BZOJ 1196 二分答案+并查集的更多相关文章
- [HNOI2006]公路修建问题 (二分答案,并查集)
题目链接 Solution 二分答案+并查集. 由于考虑到是要求花费的最小值,直接考虑到二分. 然后对于每一个二分出来的答案,模拟 \(Kruskal\) 的过程再做一遍连边. 同时用并查集维护联通块 ...
- BZOJ 1196 [HNOI2006]公路修建问题(二分答案+并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1196 [题目大意] 对于每条可能维修的公路可选择修一级公路或者二级公路,价值不同 要求 ...
- 洛谷P1991无线通讯网[kruskal | 二分答案 并查集]
题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...
- HDU-3081-Marriage Match 2(最大流, 二分答案, 并查集)
链接: https://vjudge.net/problem/HDU-3081 题意: Presumably, you all have known the question of stable ma ...
- [NOI2014] 魔法森林 (二分答案,并查集)
本思路仅供参考,数据强一点应该该会被卡. 本蒟蒻没有打 \(link\) - \(cut\) - \(tree\) . 而是用暴力水了过去. 具体思路很简单,先二分最少的 \(a_i\) , 再在 \ ...
- 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集
[BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...
- poj-3657 Haybale Guessing(二分答案+并查集)
http://poj.org/problem?id=3657 下方有中文版,不想看英文的可直接点这里看中文版题目 Description The cows, who always have an in ...
- HNOI2006-公路修建问题(二分答案+并查集)
公路修建问题 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨 ...
- B1821 [JSOI2010]Group 部落划分 Group 二分答案&&并查集
这个题正解是最小生成树,但是...最大值最小?一看就是二分答案啊!不用多想,直接二分答案加暴力验证就行了. 题干: Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒 ...
随机推荐
- 转:应用JMeter测试solr请求
使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...
- 《C++ Primer》之面向对象编程(四)
纯虚函数 在前面所提到过的 Disc_item 类提出了一个有趣的问题:该类从 Item_base 继承了 net_price 函数但没有重定义该函数.因为对 Disc_item 类而言没有可以给予该 ...
- OpenVPN客户端解析
windows版本的VPN客户端,实际上就是一个外壳,创建了图形界面,托盘,和 右键菜单, 在connect的动作里,实际上是通过cmd调用 openvpn.exe openvpn --config ...
- ShellExecute, WinExec, CreateProcess区别
ShellExecute ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 有几个API函数都可以实现这些功能 ...
- Chapter 2 Open Book——21
I kept my head down and glanced up under my lashes. 我一直保持低着头并且在睫毛之下瞟了一眼. None of them were looking t ...
- LeetCode OJ 27. Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. D ...
- crossdomain 可用
<cross-domain-policy> <allow-access-from domain="*"/> <allow-http-request-h ...
- go:挂webserver
apache配置: <VirtualHost *:80> ServerName test.com DocumentRoot /home/q/system/Engine/src/biz/ww ...
- 安卓无法生成R文件原因
原因个人总结出来: 清单文件报错,则无法生成R文件 gen和bin目录可以删除
- login/logout切换
1. 前端按钮 <img border="0" width="18" height="18" src="<%=base ...