BZOJ2654: tree 二分答案+最小生成树
Description
Input
Output
Sample Input
0 1 1 1
0 1 2 0
Sample Output
Solution
这做法反正我是想不到的...
考虑怎么让拎出来的白色边减少
我们可以给白色边加个权值
然后又因为这个权值有单调性,所以二分来求最小
二分之后拿最小生成树判定就好了
#include <bits/stdc++.h> using namespace std ; #define N 100010
#define inf 0x3f3f3f3f int n , m , sum = , ans = ;
struct node {
int u , v , w , col ;
} e[ N ] ;
int cnt , ned , t = ;
int f[ N ] ; bool cmp( node a , node b ) {
return ( !a.col ? a.w + t : a.w ) < ( !b.col ? b.w + t : b.w ) ;
} int find( int x ) {
if( f[ x ] == x ) return x ;
return f[ x ] = find( f[ x ] ) ;
} bool check( int x ) {
t = x ;
for( int i = ; i <= n ; i ++ ) f[ i ] = i ;
sort( e + , e + cnt + , cmp ) ;
int tot = ; sum = ;
for( int i = ; i <= cnt ; i ++ ) {
int x = find( e[ i ].u ) , y = find( e[ i ].v ) ;
if( x != y ) {
f[ y ] = x ;
sum += e[ i ].w ;
if( !e[ i ].col ) tot ++ ;
}
}
return tot >= ned ;
} int main() {
scanf( "%d%d%d" , &n , &m , &ned ) ;
for( int i = , u , v , w , col ; i <= m ; i ++ ) {
scanf( "%d%d%d%d" , &u , &v , &w , &col ) ;
e[ ++ cnt ].u = ++u ; e[ cnt ].v = ++v ; e[ cnt ].w = w ;
e[ cnt ].col = col ;
}
int l = -1e5 , r = 1e5 ;
while( l <= r ) {
int mid = ( l + r ) >> ;
if( check( mid ) ) l = mid + , ans = sum ;
else r = mid - ;
}
printf( "%d\n" , ans ) ;
return ;
}
BZOJ2654: tree 二分答案+最小生成树的更多相关文章
- [BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那 里的交通情况还是很糟糕.所以,OIER Association组 ...
- [BZOJ2654]tree(二分+Kruskal)
2654: tree Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 2733 Solved: 1124[Submit][Status][Discus ...
- BZOJ2654 tree
Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示点数,边数和需要的白色 ...
- [bzoj2654] tree 最小生成树kruskal+二分
题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入格式 第一行V,E,need分别表示点数,边数和需要的白色边数.接下来E行, ...
- [BZOJ2654]:tree(Kruskal+WQS二分)
题目传送门 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入格式 开始标号),边权,颜色(0白色1黑色). 输出格式 一行表 ...
- Luogu P1396 营救【最小生成树/二分答案/最短路】 By celur925
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- 2021.07.19 BZOJ2654 tree(生成树)
2021.07.19 BZOJ2654 tree(生成树) tree - 黑暗爆炸 2654 - Virtual Judge (vjudge.net) 重点: 1.生成树的本质 2.二分 题意: 有一 ...
- BZOJ4317Atm的树&BZOJ2051A Problem For Fun&BZOJ2117[2010国家集训队]Crash的旅游计划——二分答案+动态点分治(点分树套线段树/点分树+vector)
题目描述 Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径都有边权,一个神秘的声音告诉他,每个点到其他的 ...
- BZOJ4556 [Tjoi2016&Heoi2016]字符串 SA ST表 二分答案 主席树
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ4556.html 题目传送门 - BZOJ4556 题意 给定一个长度为 $n$ 的字符串 $s$ . ...
随机推荐
- 算法抽象及用Python实现具体算法
一.算法抽象 它们一般是在具体算法的基础上总结.提炼.分析出来的,再反过来用于指导解决其它问题.它们适用于某一类问题的解决,用辩 证法的观点看,抽象的算法和具体的算法就是抽象与具体.普遍性与特殊性.共 ...
- webpack笔记二——entry
entry是输入目录文件,有三种形式 1.对象键值对形式 entry: { main: './src/script/main.js', b: './src/script/b.js' }, 注意的是输出 ...
- requests库的小技巧
#coding:utf-8 import requests # url = 'http://www.baidu.com' # response = requests.get(url) # print ...
- What is Druid?
Druid is a data store designed for high-performance slice-and-dice analytics ("OLAP"-style ...
- Java-SpringMvc-@ResponseBody返回中文字符串乱码
第一种.注解 @RequestMapping(value = "/test.do", method = {RequestMethod.GET},produces = "t ...
- 万恶之源 - Python基础知识补充
编码转换 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte 2. GBK: 中⽂国标码, ...
- Andrew Ng-ML-第十章-应用机器学习的建议
1.如何改进性能不好的学习算法 图1.运用到测试集上效果不佳 当进行一个正则化线性回归时,最小化了代价函数得到参数,但是运用到新的测试集上,发现效果不好,那么如何改进? 1).增加训练集.但是实际上花 ...
- test examples/test scripts
//https://www.getpostman.com/docs/v6/postman/scripts/test_examples //Setting an environment variable ...
- 共用tableview一个继承类里面有
里面的复用cell会不会混在一起呢?
- EXTJS 4.2.1.883 Summary 合计栏宽度bug
EXTJS 4.2.1.883中改进了summary插件,使合计栏能够在grid最底部显示,但是列宽和表格对不上,解决方法: 找到以下样式 .x-docked-summary .x-grid-tabl ...