[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
Description
Input
Output
一个数据,表示花费最大的公路的花费。
Sample Input
3 9 6 3
1 3 4 1
5 3 10 2
8 9 8 7
6 8 8 3
7 1 3 2
4 9 9 5
10 8 9 1
2 6 9 1
6 7 9 8
2 6 2 1
3 8 9 5
3 2 9 6
1 6 10 3
5 6 3 1
2 7 6 1
7 8 6 2
10 9 2 1
7 1 10 2
Sample Output
5
Solution
做法:二分答案+最小生成树
最大值最小,那就二分咯
然后又是明显的最小生成树...改一下板子就行了
- #include <bits/stdc++.h>
- using namespace std ;
- #define N 50000
- int n , k , m ;
- int f[ N ] ;
- struct node {
- int x , y , c1 , c2 ;
- } e[ N ] ;
- int find( int x ) {
- if( f[ x ] == x ) {
- return x ;
- }return f[ x ] = find( f[ x ] ) ;
- }
- bool check( int t ) {
- for( int i = ; i <= n ; i ++ ) f[ i ] = i ;
- int cnt = ;
- for( int i = ; i < m ; i ++ ) {
- if( e[ i ].c1 > t ) continue ;
- int x = find( e[ i ].x ) , y = find( e[ i ].y ) ;
- if( x != y ) f[ y ] = x , cnt ++ ;
- }
- if( cnt < k ) return ;
- for( int i = ; i < m ; i ++ ) {
- if( e[ i ].c2 > t ) continue ;
- int x = find( e[ i ].x ) , y = find( e[ i ].y ) ;
- if( x != y ) f[ y ] = x , cnt ++ ;
- }
- if( cnt != n - ) return ;
- return ;
- }
- int main() {
- scanf( "%d%d%d" , &n , &k , &m ) ;
- for( int i = ; i < m ; i ++ ) {
- int x , y , v , v2 ;
- scanf( "%d%d%d%d" , &x , &y , &v , &v2 ) ;
- e[ i ] = ( node ) { x , y , v , v2 } ;
- }
- int l = , r = , ans = ;
- while( l <= r ) {
- int mid = ( l + r ) >> ;
- if( check( mid ) ) r = mid - , ans = mid ;
- else l = mid + ;
- }
- printf( "%d\n" , ans ) ;
- }
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树的更多相关文章
- 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]
题目传送门 公路修建问题 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Associa ...
- [HNOI2006]公路修建问题 (二分答案,并查集)
题目链接 Solution 二分答案+并查集. 由于考虑到是要求花费的最小值,直接考虑到二分. 然后对于每一个二分出来的答案,模拟 \(Kruskal\) 的过程再做一遍连边. 同时用并查集维护联通块 ...
- bzoj 1196: [HNOI2006]公路修建问题 二分+并查集
题目链接 1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1576 Solved: 909[Submit ...
- BZOJ1196: [HNOI2006]公路修建问题
Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织 ...
- bzoj 1196: [HNOI2006]公路修建问题(二分+贪心)
传送门 解题思路 看到最大,肯定要先想二分答案.二分之后首先从小到大枚举\(k\)个小于\(lim\)的所有一级公路,然后用并查集连到一起,然后就在剩下的里面从小到大找n-1-k个二级公路,模仿最小生 ...
- 【分块答案】【最小生成树】【kruscal】bzoj1196 [HNOI2006]公路修建问题
二分(分块)枚举 边权上限.用kruscal判可行性. #include<cstdio> #include<algorithm> #include<cstring> ...
- BZOJ1196 [HNOI2006]公路修建问题 【二分 + Kruskal】
题目 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨在建立O ...
- BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案
BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 分析: ...
- 【最小生成树】BZOJ 1196: [HNOI2006]公路修建问题
1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1435 Solved: 810[Submit][Sta ...
随机推荐
- 泛型T和通配符?的区别
这里如果是泛型T的话,那么创建该类的时候就需要指定类型,而通配符不需要.
- python-面向对象-10-单例
单例 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟 ...
- 深度学习之TensorFlow(一)——基本使用
一.目前主流的深度学习框架Caffe, TensorFlow, MXNet, Torch, Theano比较 库名称 开发语言 速度 灵活性 文档 适合模型 平台 上手难易 Caffe c++/cud ...
- Andrew Ng-ML-第七章-逻辑回归
1.极大似然估计-逻辑回归代价函数的简化 Andrew Ng的ML视频上讲到:逻辑回归的代价函数可以用最大似然估计法进行简化成上图中第二个式子. 所以学习了一下极大似然估计原理: 2.求偏导 逻辑回归 ...
- 对比jQuery和AngularJS的不同思维模式
jQuery是dom驱动,AngularJS是数据驱动,这里有一篇文章阐述的非常好,建议看看 本文来自StackOverFlow上How do I “think in AngularJS” if I ...
- iOS UI基础-5.0 QQ框架(Storyboard)
1.拉入TabBarController和4个Navigation 2.TabBarController关联Navigation 3.设置消息,拉入一个Button,设置背影 4.联系人,拉入一个Se ...
- jsp02
el表达式,jstl标签 1.el表达式是什么? sun制定的一种规范,主要是给标签的属性赋值,或者直接输出. <%=user.name%> java5版本以上支持jsp的el表达式和js ...
- GNU Make中文手册(一)
GNU Make 翻译:loverszhaokai 最新版文档请参考github: https://github.com/loverszhaokai/GNUMakeManual_CN 欢迎大家提出修改 ...
- 012-centos6.5配置静态ip
文件名为:ifcfg-eno16777736 DEVICE=eno16777736TYPE=EthernetONBOOT=yesNM_CONTROLLED=noBOOTPROTO=staticIPAD ...
- CXF创建webservice客户端和服务端
转 一.CXF的介绍 Apache CXF是一个开源的WebService框架,CXF大大简化了Webservice的创建,同时它继承了XFire的传统,一样可以和spring天然的进行无缝的集成.C ...