6天的GDKOI终于结束了,考得还行吧(有点意外),这里做做总结。
普及组
整个普及组我好像是745分第9名,自我感觉还不错吧。
Day1
这一天总的来说还是有些遗憾的,本来也许应该有400的,不过T1出了一些小意外。
T1
一个比较签到的题,不过比赛的时候我不小心把前缀异或的行列打反了,然后少判断了1,n和n,1的情况,炸剩20分,有点难受。要自己出几个数据看看,或者打对拍,最重要还是要自己肉查,无论是一般不会错的文操或者说是思路,都要检查一遍。
T2
一开始看完题目看样例的时候感觉很奇怪,我一直搞不懂,后来点下发文件的时候才发现样例错了。一开始没什么思路,简单化简了一下柿子,发现要找x左右两边第一个>=y的点。然后就想到把询问挂在点上,然后就想到离线处理l,r。用线段树处理,发现一次循环好像不好做,于是搞了前缀/后缀线段树求出。其实有常数更小的方法,就是用单调栈+二分。AC
T3
比赛时想了一个贪心的做法,不大确定是否正确,拿了两个指针随便搞搞,打得最短。不过听题的时候明白了是正确的。
T4
这一题我想了三四十分钟什么都没想出来。后来重新整理一下思路,发现要过这道题要不在线qlogn要不预处理+在线,或者离线,然后得出结论一定是买p=w的票,那么就是求连通块长度,用并查集处理一下就好了。AC
Day2
Day2是我普及考得最崩的一次(自认为),没有到大众分(200)
T1
我用的是 O ( 1 ) O(1) O(1)的做法,处理出来所有2,5,3,7,然后消掉重复的(2,5)和 (3,7),用周期问题处理一下就好。不过我好像忘记打%10了,60分飞了。。。以后要更认真地检查。
T2
比赛时想了一个奇怪之极的方法,需要求前驱后继,nlogn,幸好评测机跑得快,让我跑过了。正解不是很懂,不过我的也没问题。
T3
比赛时想了很久都不会做,只好打了一个暴力坑了40分。正解是倍增,具体做法看我的另一篇博客。推推柿子的事情。
T4
看到这是一道构造题,我整个人都是崩溃的,瞎打了很多奇怪的东西,爆0了。
正解是分奇偶性,构成一个二分图,然后暴力搜索(题解方法)或者网络流(某H姓神犇)
需要转换,质量很高。
Day3
虽然这天感觉好像崩了(T4文操打错),但分数竟然是第9,加上五十分就是第三了。
T3
看完四题后感觉最有意思的应该是T3吧。我看到这一大串式子,我猜应该是整除分块。然后在那里推柿子,推了半天,最多推到一个
O
(
n
n
)
O(n\sqrt n)
O(nn) 的奇怪柿子,只能这样打了,60分。
正解原来是观察后面那串
∑
j
∣
i
λ
(
j
)
\sum_{j|i}\lambda(j)
∑j∣iλ(j) ,发现只有当i为完全平方数时答案才为1,可惜我不会证(已经问了好多个巨佬了,包括PJ总分第3的CZJ)。
T1
T3推柿子无果后返回来想T1,一开始本来想用叉积求角度,后来发现自己不会C++的 c o s − 1 cos^{-1} cos−1 只好从边入手,发现就是边的比例。然后打的时候发现double确实会有些精度问题,于是我就定了一个 1 0 − 8 10^{-8} 10−8 的误差范围(真是智者,为什么不直接搞分数?),结果挂了15分。以后能用整数还是尽量用整数,不要随便搞double。
T4
打完T1后去想T4,打了个dfs,发现n=8 都跑不过去,然后不停优化优化,最后加上了记忆化,应该能过50分的数据。但是!我文操打错了,我把"sequence" 打成了"squence"。。。崩。以后要仔细检查!正解是dp,不难理解,但是不好推。
总结
以后还是要细心一些,要锻炼自己查代码问题的能力和写代码的能力,要尽量减少不必要的失误。
提高组
提高组感觉还不错,第50+名,毕竟是跟高中的同场竞技。
Day1
提高Day1感觉是六天中最炸的一天,240+名
T1
第一题看懂了题目,沾沾自喜,然后脑子就出问题了,打了个一个暴力,匆匆走人,结果爆0!我在考场上连随机数都没有打……我也不知道我在想什么
正解是贪心,GJX还在后一天的讲座中讲了随机数的做法2333
T2
想了很久很久后无果,只好打了一个 O ( n 2 ) O(n^2) O(n2)暴力,同样匆匆走人,结果没有注意到数组空间的问题,一分没有QAQ
T3
我在这上面想了很久,然后想出一个
O
(
n
n
)
O(n\sqrt n)
O(nn) 的分块的做法,然后怒肝2h+终于过了前三个样例。一测第4个样例:RE,原来空间炸了(我还开的是vector)!无奈,只能这样交上去,结果还有65分(唯一拿分的一题)
正解是manacher+二分答案+ST表
T4
看完题,完全没有思路,直接弃疗。好像说是多项式+生成函数
Day2
6天当中最满意的是Day2,270分
T1
比赛时看到期望,顿时精神抖擞,连忙列一个转移方程: F i = p i F i + 1 + ( 1 − p i ) F i − 1 + 1 F_i=p_iF_{i+1}+(1-p_i)F_{i-1}+1 Fi=piFi+1+(1−pi)Fi−1+1,然后就想起三天前讲的概率和期望(我唯一听完的一场讲座),想到里面用转移系数然后解方程的方法,连忙推柿子,打了一打,过样例了。但没有大数据,心里很没底,而且暴力也不会打。幸好最终A了。
T2
完全没什么想法,匆匆打了个暴力走人,后来仔细一想想到了type=2的做法,于是T2就拿了40分。正解就是线段树(我竟然没想到……)
T3
幸好前一天学会了Manacher,今天刚好用到,打一个dp,然后搞个马拉车,用一个线段树优化一下就好了。
T4
毫无思路,同样打个暴力走人。正解不会
Day3
最难的一天,没多少人上100(好像不过10个)
坑了一个85分,竟然有前20.
这天的就没什么好总结的了,全是暴力,虽然有点波折,但是终究是暴力。T2由于不会bitset,做不出60分……
总结
这次GDKOI暴露出了自己很多的问题:特别是考得不稳。
容易发现:如果一天没有一道题发生失误的话,分数是很可观的,如提高Day2,Day3
继续努力吧!