OIer‘s dairy
高中时期作为一名OIer的记录
Azureovo
这个作者很懒,什么都没留下…
展开
-
如何卡SPFA
由于一个校内最短路题数据太水,于是就和司机一起研究如何卡SPFA…正权边卡SPFA的基本思路是弄一个网格图,然后这个网格图行比列小得多,比如10*10000之类的…然后对于竖着的边边权就设多么小,然后横着的边权就设多么大(比如1和rand()%10000+10)还可以在图里随机加一些奇怪的边.然后对于点个数1e5,边个数2e5的有向图,随机打乱边或随机打乱边+SLF的SPFA都被卡到了入队...转载 2019-10-09 23:26:14 · 1832 阅读 · 0 评论 -
题解 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 · 101 阅读 · 0 评论 -
2019正睿Day4题解
path考虑直接在 DFS 整棵树的过程中构造哈密尔顿回路。先考虑如果是一条链怎么构造,我们可以隔一个跳一下,就像这样:那么这样构造我们只需要用到距离不超过 2 的边,所以直接拓展到树上即可:如果当前节点深度是奇数,那么我们在 DFS 前输出这个点,否则在 DFS 完所有孩子之后再输出这个点。容易验证这样构造是对的。时间复杂度: Θ(n)Θ(n)Θ(n)。magic首先,使用 KMP...原创 2019-10-21 15:22:06 · 177 阅读 · 0 评论 -
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 · 264 阅读 · 0 评论 -
STL-vector
#include<vector>vector<int> vec;vector <int> vec(10,1);//创建了有10个元素的向量,并赋初值为1int 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 · 90 阅读 · 0 评论 -
题解 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 · 166 阅读 · 0 评论 -
解题报告-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 · 182 阅读 · 0 评论 -
离散化
#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 · 97 阅读 · 0 评论 -
正睿Day5题解
color我们可以把染黑看成删掉这条边,那么每次相当于是,如果存在一个点有且仅有一条出边,那么把这条边也删掉,最后要删完所有的边。那么我们考虑一个环,可以发现这个环如果一条边都不删,那么最后一定会被留下来,因为每个点都至少有两个出边。所以,在初始的边删完之后,图一定得要无环。我们考虑一个无环的图,可以发现他就是一个森林。考虑森林的叶子节点,可以发现每次叶子节点的父边都会被删掉,而删掉之后森...原创 2019-10-22 15:22:20 · 185 阅读 · 0 评论 -
2019国庆清北刷题营
图论图论部分转载于Shu_Yu_Mo の blog2-SATSomeThing又名2-SAT-2判断有无解确定变量确定关系表达式变量的取值有两种%d - SAT 表达式有多少个变量SAT - %d 每个变量的情况个数加边规则如果x−−>yx−−>yx−−>yx−−>yx --> yx−−>yx−−>yx−−>yx−−&g...原创 2019-10-07 18:41:27 · 229 阅读 · 0 评论 -
2019正睿Day3题解
T1大小关系相同的一个区间填的数是一段连续的数每一段数用卡特兰数求解证明:钩子公式杨氏图表T2原创 2019-10-16 15:10:58 · 167 阅读 · 0 评论 -
2019正睿Day1题解
1.seq奇数和偶数显然是独立的,我们只考虑其中一种即可。如果没有要求字典序最小的话,则显然相对位置不变的方案是最优的,那么我们可以直接得到一种合法方案以及最小代价。我们用 xi 表示第 i 个数是往左,往右还是不变,那么按 xi 分段后显然每一段是独立的,否则代价一定大了。那么我们考虑 xi 相同的一段。如果他们都是向左的,那么我们可以按照从大到小的顺序,每个数字都尽可能向后面放。而如...原创 2019-10-15 18:28:23 · 291 阅读 · 0 评论 -
题解 P3667 【[USACO17OPEN]Bovine Genomics G奶牛基因组(金)】
查看原题请戳这里首先,这道题让求最大值最小,于是我们就很自然得想到了去二分这个最小值。那么,怎么check呢?我们发现,如果直接暴力去check,即二分区间长度+暴力枚举字符串+暴力枚举区间左端点+暴力对比,那么时间复杂度是O(n2m2log2n)O(n^2m^2\log_2n)O(n2m2log2n)的。(引人深思的复杂度……)很显然,我们需要去优化这个时间复杂度。首先,如果我们对...原创 2019-10-17 20:12:01 · 268 阅读 · 0 评论 -
解题报告-2019国庆清北Day6
Day6查看题面请戳这里T1二维差分考场代码#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<algorithm>#define INF 0x7fffffffusing namespace std;int n,m...原创 2019-10-07 18:40:22 · 126 阅读 · 0 评论