- 博客(14)
- 资源 (8)
- 收藏
- 关注
原创 2019国庆清北刷题营
图论 图论部分转载于Shu_Yu_Mo の blog 2-SAT SomeThing 又名2-SAT-2 判断有无解 确定变量 确定关系表达式 变量的取值有两种 %d - SAT 表达式有多少个变量 SAT - %d 每个变量的情况个数 加边规则 如果x−−>yx−−>yx−−>yx−−>yx --> yx−−>yx−−>yx−−>yx−−&g...
2019-10-07 18:41:27
302
原创 正睿Day5题解
color 我们可以把染黑看成删掉这条边,那么每次相当于是,如果存在一个点有且仅有一条出边,那么把这条边也删掉,最后要删完所有的边。 那么我们考虑一个环,可以发现这个环如果一条边都不删,那么最后一定会被留下来,因为每个点都至少有两个出边。 所以,在初始的边删完之后,图一定得要无环。我们考虑一个无环的图,可以发现他就是一个森林。考虑森林的叶子节点,可以发现每次叶子节点的父边都会被删掉,而删掉之后森...
2019-10-22 15:22:20
262
原创 2019正睿Day4题解
path 考虑直接在 DFS 整棵树的过程中构造哈密尔顿回路。 先考虑如果是一条链怎么构造,我们可以隔一个跳一下,就像这样: 那么这样构造我们只需要用到距离不超过 2 的边,所以直接拓展到树上即可:如果当前节点深度是奇数,那么我们在 DFS 前输出这个点,否则在 DFS 完所有孩子之后再输出这个点。容易验证这样构造是对的。 时间复杂度: Θ(n)Θ(n)Θ(n)。 magic 首先,使用 KMP...
2019-10-21 15:22:06
247
原创 题解 P3667 【[USACO17OPEN]Bovine Genomics G奶牛基因组(金)】
查看原题请戳这里 首先,这道题让求最大值最小,于是我们就很自然得想到了去二分这个最小值。 那么,怎么check呢? 我们发现,如果直接暴力去check,即二分区间长度+暴力枚举字符串+暴力枚举区间左端点+暴力对比,那么时间复杂度是O(n2m2log2n)O(n^2m^2\log_2n)O(n2m2log2n)的。(引人深思的复杂度……) 很显然,我们需要去优化这个时间复杂度。 首先,如果我们对...
2019-10-17 20:12:01
353
原创 题解 P2886 【[USACO07NOV]牛继电器Cow Relays】
查看原题请戳这里 首先,我们要明确这里的最短路是在经过n条路径的前提下的最短路,因为这是无向图,所以一定有解。 我们先来看朴素的Floyd的代码: for(int k = 1; k <= n; k++) for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) f[i][j] = min(f[i][j],f[i][...
2019-10-17 09:14:35
246
原创 离散化
#include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<algorithm> #define ll long long #define INF 0x7fffffff #define re register #define rep(i,a,...
2019-10-16 19:57:13
143
原创 STL-vector
#include<vector> vector<int> vec; vector <int> vec(10,1);//创建了有10个元素的向量,并赋初值为1 int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); //push_back(尾部插入一个元素) vec.push_back(a); //inse...
2019-10-15 18:30:59
136
原创 2019正睿Day1题解
1.seq 奇数和偶数显然是独立的,我们只考虑其中一种即可。 如果没有要求字典序最小的话,则显然相对位置不变的方案是最优的,那么我们可以直接得到一种合法方案以及最小代价。 我们用 xi 表示第 i 个数是往左,往右还是不变,那么按 xi 分段后显然每一段是独立的,否则代价一定大了。 那么我们考虑 xi 相同的一段。如果他们都是向左的,那么我们可以按照从大到小的顺序,每个数字都尽可能向后面放。而如...
2019-10-15 18:28:23
369
原创 2019正睿Day2题解
1.stone 根据期望的线性性,答案 E(t) = P2 + P3 + · · · + Pn + 1,其中 Pi 是第 i 堆石子在第 1 堆之前被取走的概率。 考虑第 i 堆,可以发现其他堆都不会影响这两堆,因此相当于只要考虑只有这两堆的情况,因此概率即为aia1+ai\frac{ai}{a1 + ai}a1+aiai。 因此答案即为∑i=2naia1+ai+1\sum_{i=2}^{n}...
2019-10-15 18:00:16
337
原创 题解 P1360 【[USACO07MAR]黄金阵容均衡Gold Balanced L…】
查看原图请戳这里 首先明确一点,题目求的是最长的每项能力提升大小都相等的区间,所以我们是不用关心一段区间每项能力到底提升了多少,只需要去记录每项能力的大小关系即可。即如果第i天能力x比能力y多k,第j天能力x比能力y也多k,那么在i~j天中x和y的变化量都相等。 所以我们就可以先维护一个二维前缀和来记录每一天每个能力的能力值,再用相邻两行做差来记录大小关系。于是,我们只需要去寻找x,y,使得第x天...
2019-10-15 17:32:30
152
转载 如何卡SPFA
由于一个校内最短路题数据太水,于是就和司机一起研究如何卡SPFA… 正权边卡SPFA的基本思路是弄一个网格图,然后这个网格图行比列小得多,比如10*10000之类的… 然后对于竖着的边边权就设多么小,然后横着的边权就设多么大(比如1和rand()%10000+10) 还可以在图里随机加一些奇怪的边. 然后对于点个数1e5,边个数2e5的有向图,随机打乱边或随机打乱边+SLF的SPFA都被卡到了入队...
2019-10-09 23:26:14
2029
原创 解题报告-2019国庆清北Day6
Day6 查看题面请戳这里 T1 二维差分 考场代码 #include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> #define INF 0x7fffffff using namespace std; int n,m...
2019-10-07 18:40:22
175
原创 解题报告-2019国庆清北Day5
Day5 下载题面请戳这里 最小差异矩阵(a.cpp, a.in, a.out) 题面 【题目描述】 有一个 n*m 的矩阵,矩阵的每个位置上可以放置一个数。对于第 i 行,第 i 行的差异定 义为该行的最大数和最小数的差。一个矩阵的差异,定义为矩阵中每一行差异的最大值。现 在给定 k 个数 v[1…k],问:从这 k 个数中选 n*m 个数放入矩阵,能够得到的矩阵的差异最 小值是多少。 【输...
2019-10-07 18:39:48
293
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅