[BZOJ2654]:tree(Kruskal+WQS二分)】的更多相关文章

题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解.   一个最小生成树问题,但是我们要选need条白边,我们用g(i)表示选取i条白边的最优方案(生成树的权值最小),那么可以大致猜出g(i)是关于i的一个下凸函数,可以发现斜率k是有单调性的,我们二分这个斜率k,相当于给每条白边的权值加上一个k,统计数量use,如果use>=need,说明k小了,要增大,同理,use<need,要减小k. 那么问题来了,如果说当前白边加上mi…
P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式: 第一行\(V,E,need\)分别表示点数,边数和需要的白色边数. 接下来\(E\)行 每行\(s,t,c,col\)表示这边的端点(点从\(0\)开始标号),边权,颜色(\(0\)白色\(1\)黑色). 输出格式: 一行表示所求生成树的边权和. 输入输出样例 输入样例#1: 2 2 1 0 1…
分析 https://www.cnblogs.com/CreeperLKF/p/9045491.html 反正这个博客看起来很nb就对了 但是不知道他在说啥 实际上wqs二分就是原来的值dp[x]表示选x个的最优解满足是一个凸包 然后就可以二分一个数 让有限制的一类数全部给权值加上这个二分的数 然后判断即可 这个题就是典型的模板题 代码 #include<bits/stdc++.h> using namespace std; ; ]; struct node { int x,y,z,col;…
题目传送门 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入格式 开始标号),边权,颜色(0白色1黑色). 输出格式 一行表示所求生成树的边权和. 样例 样例输入: 2 2 10 1 1 10 1 2 0 样例输出: 数据范围与提示 V≤50000,E≤100000,所有数据边权为[1,100]中的正整数. 题解 看到题很恐怖,首先,应该都能想到最小生成树,因为题目上就说了嘛- 但是还有要求,要恰好有need条白边,那么…
Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行 每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色1黑色). Output 一行表示所求生成树的边权和. Sample Input 2 2 1 0 1 1 1 0 1 2 0 Sample Output 2 HINT 数据规模和约定 0:V<=10 1,2…
题目传送门(内部题38) 输入格式 每个输入文件包含多组测试数据.选手应当处理到文件结束($EOF$) 每一组数据包括$3$行. 第$1$行包含三个正整数$n,a,b$,表示有$n$只猫,$gyz$有$a$包干脆面和$b$包豆干. 第$2$行包含$n$个保留小数点后$3$位的实数$p_1,p_2...p_n$,$p_i$表示第$i$只猫喜欢干脆面的概率. 第$3$行包含$n$个保留小数点后$3$位的实数$q_1,q_2...q_n$,$q_i$表示第$i$只猫喜欢豆干的概率. 输出格式 每组测试…
2654: tree Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 2733  Solved: 1124[Submit][Status][Discuss] Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行,每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色…
应用分析 它的作用就是题目给了一个选物品的限制条件,要求刚好选$m$个,让你最大化(最小化)权值, 然后其特点就是当选的物品越多的时候权值越大(越小). 算法分析 我们先不考虑物品限制条件, 假定我们要最大化权值. 然后其中我们二分一个$C$,表示选一次物品的附加权值, 如果我们$C$越大,我们选的物品个数越多,权值越大, 于是当选的物品个数大于$m$时,减小$C$,否则增大$C$, 最后计算答案的时候去掉$C$值的影响即可. Updata:这回还是讲一讲算法吧-->理论算法分析 首先我们拿到一…
WQS二分,一种优化一类特殊DP的方法. 很多最优化问题都是形如“一堆物品,取与不取之间有限制.现在规定只取k个,最大/小化总收益”. 这类问题最自然的想法是:设f[i][j]表示前i个取j个的最大收益,转移即可.复杂度O(n^2). 那么,如果在某些情况下,可以通过将问题稍作转化,变成一个不强制选k个的DP,而最后DP出来的最优解一定正好选了k个,那么问题就会简化很多. WQS二分就是基于这个思想. 首先考虑建一个二维坐标系,x轴是选的数的个数,y轴是最大收益,如果这个x-y图像有凸性,那么就…
2021.07.19 BZOJ2654 tree(生成树) tree - 黑暗爆炸 2654 - Virtual Judge (vjudge.net) 重点: 1.生成树的本质 2.二分 题意: 有一张无相带权连通图,每一条边都是黑色或者白色,求一棵恰好有need条白色边的最小生成树. 分析: 我们可以把每一条边按照一定优先级进行排序,当然,手动优先级(手动狗头),对于同一个权值的边,我们规定白色边比黑色边优先级高.但是对于权值特别小的的黑色边,在构成一棵生成树时,搞不好所有边都是由黑色边构成的…