11 2022 档案
摘要:引入 随便给出一组数据: 5 3 1 2 4 初始逆序对数量: 。 冒泡排序 一轮:3 1 2 4 5 。 两轮:1 2 3 4 5 。 逆序对块 观察会发现,数 会一直后退,直到有一个大于 的数 , 也会一直后退…… 后退数将区间划分成
阅读全文
摘要:以后写无向图最好都记录一下来边from,不要记录father,因为前者更有通用性。 对于一个点双连通分量 ,除非该连通子图只有一个点,否则 至少有两个点。 证明: 只有一个点的情况,显然 。 如果点数至少有两个: 随便取两个点,构成一个子图 。 根据定义,删去给图中任意一个
阅读全文
摘要:有向图 判断环是否存在: 使用拓扑排序,如果n个点全部入队并出队,说明图是个DAG;如果没有完全入队,说明有环。因为有环的话,就会有点的入度一定不为0。 判断正/负环: 图的权值 或者 。可以对图求强连通分量(Tarjan),
阅读全文
摘要:这道题,如果使用二分加判环,会变得十分简单。 但是如何做到线性复杂度呢? 答案是广搜时同时统计答案,因为环的形成肯定是一个个扩散出去的。 细节: 关于为何 第一个出来的不是正确解: 一定是最小的,但是 却不一定,根据三角不等式,$dist[v] \le di
阅读全文
摘要:一开始的想法和这篇题解一样。 我存询问是按点存,但是他是直接按照询问编号存。 我询问的处理不好,挂了,改成了最大生成树。 简单思考一下有了一个做法:二分答案, 表示能否通过权值大于等于 的边,使 联通,这样只有60分。 进而思考,考虑从大到小加边,动态维护连
阅读全文
摘要:#include <cstdio> #include <iostream> using namespace std; void test0() { for (int i = 1; i <= 3; i ++ ) { static int sum = 0; sum ++ ; printf("%d\n",
阅读全文
摘要:Solution I 先求出最小生成树 。 由于次小生成树 一定至少有一条边与 不同,我们可以枚举每一条边 ,在删去 的图上求最小生成树 , 就是原图上次小生成树 。注意虽然只枚举了一条边,但是这只是保证了 不会被选中,其它边是可以任意选
阅读全文
摘要:P1522 [USACO2.4] 牛的旅行 Cow Tours 由于题目的N很小,且要求任意两点之间距离,很容易想到一下暴力做法: 求出题目的联通块,记id[u]为点u的连通块编号; 枚举任意两个无序点对(j从i+1开始),连接它们,用floyd算法跑出最短路,暴力求出该牧场的直径并更新答案。 该暴
阅读全文
摘要:原题链接 这题的分类讨论很恶心,主要有两种思想: 分类讨论Y年和X年降雨量是否确定的情况: 1.1 都确定; 1.2 Y年确定,X年不确定; 1.3 Y年不确定,X年确定; 1.4 都不确定。 由于false了就不能maybe和true,而true又要不maybe也不false,所以判断顺序fals
阅读全文