[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2229 [题意] 回答若干个关于割不超过x的点对数目的询问. [思路] [最小割最多有n-1个,这n-1个最小割构成一个最小割树] 分治法寻找n-1个最小割.对于当前点集X,任选两点为ST做最小割,然后找出与S相连的所有点和与T相连的所有点构成S集与T集,更新S集与T集的最小割.然后递归处理两个集合. [代码] #include<set> #include<cmath>…
4519: [Cqoi2016]不同的最小割 题目:传送门 题解: 同BZOJ 2229 基本一样的题目啊,就最后用set记录一下就ok 代码: #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<set> using namespace std; ; struct node { int x,…
题解 我们可以根据点积的定义,垂直于原点到给定点构成的直线作一条直线,从正无穷往下平移,第一个碰到的点就是答案 像什么,上凸壳哇 可是--动态维护上凸壳? 我们可以离线,计算每个点能造成贡献的一个询问区间[l,r]表示这个点在第l个询问和第r个询问之间存在,按照每个点的横坐标大小顺序插入线段树,我们就可以类似斜率优化构造出凸包 对于所有询问,我们可以给它们按极角排序,然后遍历线段树,如果按照极角排序,那么垂直于他们的直线斜率递减,最优点也右移 实现的方法就是一边遍历线段树,一边归并排序,每一层按…
给定一个\(n\)个点\(m\)条边的无向连通图,多次询问两点之间的最小割 两点间的最小割是这样定义的:原图的每条边有一个割断它的代价,你需要用最小的代价使得这两个点不连通 Input 第一行两个数\(n,m\) 接下来\(m\)行,每行3个数\(u,v,w\),表示有一条连接\(u\)与\(v\)的无向边,割断它的代价为\(w\) 接下来这一行有一个整数\(Q\),表示询问次数 接下来\(Q\)行,每行两个数\(u,v\),你需要求出\(u\)与\(v\)之间的最小割 Output 输出共\(…
题解: 好题!! 这题似乎能上我代码长度记录的前五? 调试时间长度应该也能上前五QAQ 首先题目要求的明显就是最小割,当然在整个森林上求Q次最小割肯定是会GG的,所以我们需要一个能快速求最小割的算法——最小割树. 最小割树,也叫分治最小割,就是通过预处理把原本的图缩成一颗树,树上两个节点路径上的最小边权就是它们的最小割,这个用树上倍增可以随便维护. 大概思想就是先求一次最小割,把划分出的S和T两个点集继续求最小割,向下分治然后连边缩点. 这题先对每个州预处理最小割树,州和州之间用KD树求出距离最…
题目大意:给定一张 N 个顶点的完全图,边有边权,求该完全图的一棵最小瓶颈树. 最小瓶颈树:一棵最大边权值在同一张图的所有生成树中最小,即:最大边权值最小的生成树,其值为该树的最大边权的权值. 引理1:最小生成树一定是一棵最小瓶颈树. 证明:若最小生成树不是最小瓶颈树,则意味着存在一条边的权值大于最小瓶颈树的最大边权值,那么将 MST 的该边去掉,则将一棵树变成了不连通的两棵树,再将最小瓶颈树的一条连接这两个联通块的边加入 MST,可以得到一棵权值更小的生成树,与 MST 性质矛盾,证毕. 引理…
分治最小割的题目,要求n2. 之前用的n3的方法自然不能用了. 于是用hash,设hash[i][j]表示在最小割为i的时候,j是否与S联通. 看懂这个需要理解一下最小割树的构造. 这种题建议用EK写,因为EK在流量保证很小的时候实际是非常快的. 另外,这题卡常. #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #in…
4435: [Cerc2015]Juice Junctions Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 20  Solved: 11[Submit][Status][Discuss] Description 你被雇佣升级一个旧果汁加工厂的橙汁运输系统.系统有管道和节点构成.每条管道都是双向的,且每条管道的流量都是1升每秒.管道可能连接节点,每个节点最多可以连接3条管道.节点的流量是无限的.节点用整数1到n来表示.在升级系统之前,你需要对现有…
传送门 首先最大流等于最小割,那么可以转化为最小割树来做(不知道什么是最小割树的可以看看这题->这里) 具体的做法似乎是$hash[i][j]$表示最小割为$i$时点$j$是否与$S$连通 然后据Claris大爷说这题卡dinic,只能用EK 顺便吐槽一句,Claris大爷的代码真的不能看…… //minamoto #include<iostream> #include<cstdio> #include<cstring> #include<cmath>…
2229: [Zjoi2011]最小割 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1565  Solved: 560[Submit][Status][Discuss] Description 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中,则称这个划分是关于s,t的割. 对于带权图来说,将所有顶点处在不同部分的边的…