06 2020 档案
摘要:Maximum Islands 思路:预处理‘L’周围包围‘W’。‘L’独自成为岛屿为最优,我们‘L’,‘W’交替处理的图((x+y)%2为同一个集合),分为两个集合,相邻的‘L’和‘W’有边,同一个集合没边,变成二分图的最大独立集问题,得出最多的互不相邻的点就是最大岛屿数量。因为我们匹配的出发点是
阅读全文
摘要:前置技能:二分图匹配和匈牙利算法的了解。 (最小点覆盖) 概念:用最少的点,让每条边都至少和其中一个点关联 性质:最小点覆盖 = 最大匹配 说明:在二分图中,求出了最大匹配后,容易得出,合理分配最大匹配的点去覆盖,未匹配的点一定与覆盖的的某个点有边。 (最小边覆盖) 概念:用尽量少的不相交简单路径覆
阅读全文
摘要:Girls and Boys 思路:二分图中,最大独立集 = 顶点数 - 最小点覆盖(最大匹配),这里没有说明明确的二分图,所以匹配出的是二倍的最大匹配(男配女,女配男)。 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio
阅读全文
摘要:Buggy Robot 思路:dp[inx][x][y],表示用了前inx个指令后的最小费用。 对于一个指令,我们可以选择不走或者走,其他的我们可以添加四个方向的指令与使用过指令后的dp来比较。 1 #include <iostream> 2 #include <algorithm> 3 #incl
阅读全文
摘要:1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 5 using namespace std; 6 7 const int N = 110; 8 int f[N][N]; 9 10 //核心想法://i到达j经过前k
阅读全文
摘要:1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <queue> 5 6 using namespace std; 7 8 #define LL long long 9 #define pb pus
阅读全文
摘要:/* mi之间互质 同余方程组 : 设正整数m1.m2.mk两两互素,则方程组 x ≡ a1 (mod m1) x ≡ a2 (mod m2) x ≡ a3 (mod m3) . . x ≡ ak (mod mk) 有整数解, 解为 x ≡ (a1 * M1 * 1/M1 + a2 * M2 * 1
阅读全文
摘要:1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <vector> 5 6 using namespace std; 7 8 #define ll long long 9 10 const int
阅读全文
摘要:G Gaming with Mia 思路:我们能找出某些情况: -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 ... 1 -1 我们发现如果大于5个数相乘,则它一定可以分解成其他更优的情况相乘再相加。(当然如果出现0,也可以最极限情况5个数相乘) 时间复杂度就是:O(1e6*
阅读全文
摘要:1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <vector> 5 #include <queue> 6 using namespace std; 7 #define pb push_back
阅读全文
摘要:J. Factorial Products 思路:根据对数性质:log(a*b) = log(a) + log(b),使得阶乘相乘转变为前缀和累加,处理了数据过大无法存储的问题。 #include <iostream> #include <cstdio> #include <algorithm> #
阅读全文
摘要:边双联通分量:在一个无向图中,存在一个极大子图,删除任意一条边之后仍然是一个无向图。 桥:在无向图中,存在某条边,删除该边之后,该无向图将会被分割成两个无向图。 1 #include <iostream> 2 #include <vector> 3 #include <cstdio> 4 #incl
阅读全文
摘要:点双连通分量:在一个无向图中,存在一个极大子图,删除任意一个节点之后该图仍然是一个连通图。 割点:在一个无向图中,存在一个节点,删除这个节点之后,该无向图会被分为若干个连通图(个数大于一),则该点为割点。 #include <iostream> #include <vector> #include
阅读全文
摘要:强连通:在有向图中,如果Vx能到达Vy,且Vy也能到达Vx,说明它们两个点强连通。 强连通分量:在有向图中,存在一个极大子图,该子图中任意两点都是强连通。 #include <iostream> #include <vector> #include <cstdio> #include <cstrin
阅读全文