GDOI2019赛前复习 & 赛后总结

赛前复习

打算看看自己学过 / 生疏了的知识点。

线性递推

把坑填完了
https://blog.csdn.net/jokerwyt/article/details/85345981

斯特林数

一类圆排列,二类集合划分
一类快速求:分治FFT ∏ ( i + x ) \prod(i+x) (i+x),乘x代表新建一个圆,乘i代表放某个数前面。据说还有一个log的做法,以后再学。

二类快速求:容斥有多少个空集。
1 集 合 数 ! ∑ ( − 1 ) i ⋅ ( 集 合 数 − i ) 个 数 ⋅ C ( 集 合 数 , i ) \frac 1 {集合数!} \sum (-1)^i \cdot (集合数-i)^{个数}\cdot C(集合数,i) !1(1)i(i)C(,i)
是一个卷积的形式,上FFT加速就可以了。

感觉斯特林反演不怎么常见,就先不看了。

单位根反演

看一次忘一次
[ n m o d    k = 0 ] = 1 k ∑ i = 0 k − 1 ( W k    n ) i [n \mod k = 0] = \frac 1 k\sum_{i=0}^{k-1}(W_k^{~~n})^i [nmodk=0]=k1i=0k1(Wk  n)i
其中Wk是%意义下的k次单位复数根,也就是 g m o − 1 k g^{\frac{mo-1}{k}} gkmo1
理解:
假如n是k的倍数,那么 W k    n W_k^{~~n} Wk  n在x轴上。
否则可以预见的是,对i取0~k-1时, ( W k    n ) i (W_k^{~~n})^i (Wk  n)i是一一对应,并且和为0的。

类欧

应该要会推的吧,记得是从1~n,并且开头要使得a,b<c

回文树

感觉自己并没有学过一样…
第一次知道回文树的根应该建成一个环。
无论是1做奇数根还是0做奇数根都没有关系。
记得除了偶数根,没有其他fail等于奇数根就行。

记得先求新点的fail再给last的转移赋值,这样不需要特判。

1做奇数根:

struct pam{
	int c[N][26],fail[N],len[N];
	char s[N];
	int sz;
	int tot, last, occ[N];

	void init(){
		len[tot = 1] = -1;
		fail[0] = 1;
		fail[1] = 0;
	}

	void extend(char cc) {
		s[++sz] = cc;
		while(s[sz] != s[sz - len[last] - 1]) last = fail[last];
		cc -= 'a';
		if (c[last][cc] == 0) {
			len[++tot] = len[last] + 2;
			int k = fail[last];
			while(s[sz] != s[sz - len[k] - 1]) k = fail[k];
			fail[tot] = c[k][cc]; //假如是0做奇数根要特判。
			c[last][cc] = tot;
		}
		last = c[last][cc];
		occ[last] ++;
	}
} P;

border相关结论

这个内容和应用实在是太多了。一时抱佛脚也没有意义。
放到后期计划里面吧。
这次就祈祷他不考…

最近经常犯错误

  1. 变量名打错(从来都是需要debug的主要原因)
    解决方法:每完成一个模块,花若干秒除错。打完之后,花1min~3min除错。

结束前15分钟check list

  1. 文件名,文件目录名是否正确(建文件的时候就copy,杜绝手打)
  2. 文件输出是否注释,是否能对样例输出正确答案到文件
  3. 是否有未删除的调试输出(全文查找printf与cout)
  4. 以预计得分高到低的顺序,检查每一个数组是否开够。

预期

rk 30。
速题时间要严格规定。每题10分钟,总体50分钟为宜。

Day1

真的是打脸了。
队线150,我只有80…发挥严重失常 + 挂了40分。
纪中只有三个上了队线…看来是没有顺利切换到gdoi模式啊。
(这次时间仍然是4h,但是题目难度较去年大了)

就在我写完上面博客后的1h,下面酒吧开始蹦迪了…整个房间都在颤抖
这个宜尚酒店真的是辣鸡,打总台投诉,说没房间了只能自己找人拼。
最后凌晨两点实在顶不住了,以无比严厉的言辞吊了前台一顿,终于答应换房间了。(说好的没房间呢?????)

早上状态还好,没有特别困。
比赛过程就不说了。总结一下出现失误的地方:

  1. T2没拍,40分暴力丢了。(这题很多人没拍,都丢了)
  2. 剩下1h,我要抉择t3的20和t4的40。理了理思路写T4,结果上下界网络流只会嘴巴,实操完全GG…误以为辅助网络流的流量就是可行流流量。(事实上是T->S边的流量。)
    结果就是这40和那20一起丢了…gg.

gd这种赛制还是不要搏一搏了吧,稳健拿暴力+对拍好了…

讲题

T1:四进制下的min/max卷积。
说人话:把max(ai,bi)<=ci的答案求出来,做高维差分即为max(ai,bi)=c的答案。再做高维后缀和即为max(ai,bi)>=c的答案。

T2:
考虑DAG拓扑序上,一条不经过某个点的路径特点:完全在其后,完全在其前,有一条边经过他。
预处理每个点向后能走多少,向前能走多少,然后再枚举每条边就可以处理了。

T3:
沙碧题
每一次组合,求这些颜色的点的虚树,扫上来求贡献,并用树状数组修改链并就可以了。

T4
最小费用可行流 + 处理负权,暂时不清楚怎么做

day2

一转眼人没了
T2 0了,GG
不过达成了rk30-的目标…

T1:库默尔+数位dp
T2:假装成几何题的dp题。利用dp转移的总数稀少进行加速。
T3:考场上yy了个sam上dp的60’做法。时间原因没有成功实现。(事实上并没有人提到?)
T4:lct维护树链以及子树信息 / 恶臭树剖维护答案式子。

总结

这次比赛很特别。感觉自己处于实力一个不上不下的尴尬境地。

  1. 暴力写挂,特别是无法对拍的部分 (过度依赖对拍)
  2. 一题都没切掉 (实力太低、临场估计不准)
  3. 4h不足以让我从容打完能拿的所有分 (码力不足,bug频发)

可能因为个人比较慢热吧。太快节奏的比赛不适应。
感觉这套题,换去年的我来打得分也差不了多少。

还有就是太嘴巴了。有些东西感觉口胡起来很简单,事实上并没有实操过。因此day1崩了。(上下界网络流)

总而言之,我觉得是太过专注于算法正确性本身(这当然也很重要),反而忽略了一些关键的思路,以及延伸应用。

当然也有一些值得以后借鉴的地方:(好像只有gdoi时间紧张…)

  1. 列各题已经做的部分分、可能会做的部分分
  2. 预估一个所需时间。并且尽量留出翻车后的容灾时间。

这场gdoi,基本上成功打出了我的下限ε=(´ο`*))

  1. 后面要重新重视模拟赛的“模拟”作用。即使比赛时间完全冗余也不能优哉游哉的边浪边打。要日积月累的训练代码能力。
  2. 然后对于没有思路的题,要及时总结缺失的知识点(包括不懂得熟练运用的),延伸拓展,做相关题目、查漏补缺。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值