tree 时间限制: 3 Sec  内存限制: 512 MB 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行,每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色1黑色). 输出 一行表示所求生成树的边权和. V<=50000,E<=100000,所有数据边权为[1,100]中的正整数. 样例输入 2 2 1 0 1 1…
[国家集训队2012]tree(陈立杰) 题目 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有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 OUTPUT 2 数据规模 0:V<=101,2,3:V<=…
我是萌萌的传送门 我是另一个萌萌的传送门 脑残错误毁一下午…… 其实题解早就烂大街了,然而很久之前我只知道是二分答案+主席树却想不出来这俩玩意儿怎么一块儿用的……今天又翻了几篇题解才恍然大悟,是把权值排序之后依次插入序列,用主席树维护连续和……(我菜爆了……= =) 还是讲讲大体思路吧,首先二分答案M,把>=M的元素标为1,<M的标为-1,然后判定满足条件的最大子串和是否>=0,是则说明判定标准可行,否则不可行,调整下一次二分即可.但是直接暴力标记肯定会T,所以尝试对所有判定标准维护线段…
Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树: * u v c:将u到v的路径上的点的权值都乘上自然数c: / u v:询问u到v的路径上的点的权值和,求出答案对于51061的余数. Input 第一行两个整数n,q 接下来n-1行每行两个正整数u,v,…
题目链接 \(Description\) 给定一个无向带权连通图,每条边是黑色或白色.求一棵最小权的恰好有K条白边的生成树. \(Solution\) Kruskal是选取最小的n-1条边.而白边数有限制,考虑为其设额外边权C. 随着C增大,选的白边数应是不增的.可以二分求一个C值使得此时恰好选择K条边.选取时应优先选白边,因为多了还可以用黑边替换,少了只能减少C. 可能的问题是,C=mid时白边数>K,C=mid+1时白边数<K,因为有很多黑边与+mid后的白边权值想等.可以用这些黑边替换掉…
[问题描述] 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的边(u1,v1)删除,加入一条新边(u2,v2),保证操作完之后仍然是一棵树: * u v c:将u到v的路径上的点的权值都乘上自然数c: / u v:询问u到v的路径上的点的权值和,求出答案对于51061的余数. [输入格式] 第一行两个整数n,q 接下来n-1行每行两个正整数u,v,描述这棵…
LCT裸题 注意打标记之间的影响就是了 这个膜数不会爆unsigned int #include<cstdio> #include<cstdlib> #include<algorithm> #include<cctype> using namespace std; #define rg register #define il inline #define sta static #define vd void #define int unsigned int…
P2619 [国家集训队2]Tree I 每次二分一个$x$,每条白边加上$x$,跑最小生成树 统计一下满足条件的最小值就好了. to me:注意二分不要写挂 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ],ans,tt; ],b[]; inline bool cmp(edge A,edge B){return (…
P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式: 第一行\(V,E,need\)分别表示点数,边数和需要的白色边数. 接下来\(E\)行 每行\(s,t,c,col\)表示这边的端点(点从\(0\)开始标号),边权,颜色(\(0\)白色\(1\)黑色). 输出格式: 一行表示所求生成树的边权和. 输入输出样例 输入样例#1: 2 2 1 0 1…
http://cogs.pro:8080/cogs/problem/problem.php?pid=1763 二分答案x 把区间内>=x的数设为1,<x的数设为-1 左端点在[a,b]之间,右端点在[c,d]之间的子序列中,若中位数>=x, 那么 [b+1,c-1]的区间和+[a,b]的最大右子段和+[c,d]的最大左子段和>=0 查询可以用线段树 多组询问,不能每一次二分都重设1和-1 所以用主席树 其中第i棵线段树表示<=i的都被设成了-1 因为主席树是线段树的前缀和,所…