GDOI2018 凉凉记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011056504/article/details/80146171

Day0

今年GDOI在中山市一中,也就是主场了(从我家走路过去五分钟)
不知道为什么,晚上很困,九点半就睡着了?!

Day1

早上大概七点起床,所以晚上是睡了多久……

试机时间有半个钟,八点半正式开始
试机的时候打了个exgcd,FFT之类的

题目

T1

给定一个数组,将这个数组划分成若干段,每段元素之和相等,求最多划多少段
n <= 10 5 , a [ i ] <= 10 6 , 1 <= a [ i ] <= 10

T2

你有个密码锁,长度为n,每个数字为0~m,初始时第i个数字为a[i],最终密码为全0。每次操作可以让一个区间加1或-1(在模m意义下)
问最少需要多少次操作使得得到正确密码

T3

一棵树,每个节点上有重量为ai的苹果
每天按顺序执行以下操作:
可能有询问某个点和它子树内的苹果重量和,询问数为q
随后会有一个人把根节点(1)上的苹果移走
然后所有节点上的苹果都会移到父亲的位置
最后可能会有某一个点多出一个重量为w的苹果,这种操作数为m
询问形如(t,x)表示在第t天询问子树x
操作形如(t,x,w)表示在第t天让点x增加w
所有数字范围 <= 10 5

T4

一个竞赛图,有若干条不想交的路径已经知道边的方向,其他等概率随机,问强连通分量的期望个数
n <= 10 5

做题

看完第一题后,发现如果直接枚举总和的约数然后直接判断是否可行的话,复杂度应该是log级别的,而且很容易break掉,应该能过,下一题。
第二题一开始想的贪心就是偏向上的往上转,偏向下的往下转,然后我看到了第二个样例。
贪心就挂了,想了十多分钟,什么区间DP和各种各样的DP,可撤销贪心都想过了,好像都不行。
第三题第一眼一看哇线段树裸题,然后想着固定一个时间点删除什么的,觉得可切,细想了一下没有问题。
第四题一看做过??然而数据大了一档,应该是NTT,但是之前那道原题没有改出来,有点亏。
看完大概九点二十,十分钟码完第一题,感觉没法拍,肉眼看了几遍,出了大数据,然后发现随机的大数据要不1要不n。
想办法弄出了一些有值的大样例,弄到十点。
第三题打暴力因为有一点点细节10分钟,大样例直接过。
然后打线段树,打完才发现有问题,我只考虑了从根节点删除的,其他点统计就会出问题。
然后方了。方了十几分钟, 到十一点才去看第二题还有没有方法。
第二题看了好久发现没救,重新看了看第三题,发现好像二维数据结构就能做,但是还是先打了询问x=1的部分分。
第二题去打了个暴力,暴力还中途删改了好多遍,反正是拖到了十一点半左右才彻底不管第二题。
接着犹豫是打二维数据结构还是打CDQ分治。
因为已经打了线段树,另一个程序已经打了树状数组,合起来不麻烦,十分钟就打完了。
样例一次过,大样例一次过。
然后拍,拍了十分钟什么都没拍出来。
测极限,调整一下数组大小,也没问题。
继续拍,拍到结束。
又去想第二题,还是无果。
第四题打了个random。

中午

出门后讨论了一下,很多人是220,就是和我一样的分数,也有好几个300~350,把第四题切掉的。

时间安排不合理,吃完饭后剩一个半小时讲课,回去睡觉略不够时间,呆坐着要等好久。
于是出去转圈圈。
Alan说他试机的时候打了NTT,刚好用到,赚。

下午

三点开始讲课。
第一题出题人直接说,300多人有得分,260多个AC。
区分度=0。
第二题出题人请samjia讲他的做法,因为他的得分差不多是n^2复杂度的分数,出题人说没有想到这档分怎么搞。
samjia被点到的时候,出题人说我点的人通常分很高。samjia说那意思就是没有AC了。
samjia就把正解讲掉了。
出题人随后复述了一遍正解:差分后就是一个位置+1,一个位置-1。贪心的想,靠近哪边就往哪边走,然后排个序什么的。
第三题放出来AC人数只有32
突然方,怎么会这么少。
出题人给出的是CDQ分治做法。
第四题没有讲太多废话。
第四题弄出多项式然后NTT就行了。

发成绩,JZ是不是因为人太多被故意放到了后面。
100+5+30+0
???
第三题挂了?
果断复评。
复评那里werkeytom和我说第三题他2e7的数组切掉没问题。
意思是我数组开小了??
复评的时候我把数组那里再开大一倍,然后就切了。
凉~~~

总结

第一天最大的失误是第三题,一byte差了70分。
第二题序列上的区间加减没有想到差分,如果想到差分就应该很容易出解。这个还是归咎于平时做题数量较少,套路没有发现。
第四题是原题,但是当时都没有去改,再加上多项式方面实在太差,使得原本是原题变成了一个劣势。
后来发现这个东西没有想象中的那么难,如果当时去仔细学一下肯定学得出来。

晚上

晚上开会,老师进行“二试考前疏导”,就是劝我不要弃疗。
最后老师让一人说一句话
samjia:“一定要记得是十二点半结束,我以为十二点结束,十一点半就开始检查”
然后差点AK。
Alan:“我也是”
然后375。

day2前先立个flag,晚上背一下SAM板子。

Day2

题目

T1

有n个点,每个点有一个a[i]
有m条边,连接x和y,权值为 i = 1 a [ x ] j = 1 b [ x ] [ g c d ( i , j ) = 1 ]
求1到n的最短路
n <= 10 5 a [ i ] <= 10 5 (这个也是大概)

T2

给一个滑稽图,求所有的导出子图中的边的数量的k次方的和。
滑稽图:边数比点数还少的联通图。
k <= 10 , n <= 10 5

T3

一排木板,每个点有两个值x和h,表示位置和高度。
两个木板可以装的水的数量为 | x 1 x 2 | m i n ( h 1 , h 2 )
两个操作:
询问一个区间内的木板中最多可以装多少水
修改一个木板两个值中的一个
n , m <= 10 5 (也是大概,数据范围我全忘了)

T4

一张图,点数为n,两个操作,操作数为m。
询问从一个点开始走一个最短的环回到原点的长度。
禁用/启用某个点。
n , m <= 400

做题

一上来看到第一题两个sigma+gcd
直接反演,好像可以过
第二题k等于1的情况和点数较少的暴力一眼,但是其他的一下没有想到。
第三题也是只会暴力。
第四题看完什么想法都没有。
感觉第二题可做一点,仔细去想了第二题
然而发现k大于2的时候还是不会做。
第四题突然想到可以枚举两个出边,然后求个最短路。
先把第一题码了,大概到十点钟。
然后去码第四题,很快就码出来了。
第三题我一直认为他x是无序的,一直在考虑三维数据结构。
一直想到十一点多,什么都没想到。
只好把第二题和第三题的暴力打了。
出来就知道凉透了。一问所有人个个200+到300

讲课

第一题就是反演,没什么说的。
第二题k>2的部分可以用找规律的方法,也可以DP,k才10,nk^2的复杂度不难。
第三题我一看屏幕上写的x递增一脸懵逼,然后出题人说到数据随机,看错题了?
因为随机,暴力就能过。
第四题发现我的暴力还是太暴力,可以只枚举一个出边就足够了的。

复评

第一题爆炸,TLE60。
不知道哪里有人给我了一张表,前70名进Day3
然后我71名?!
两天一共少了200分以上。
于是就去复评了。
一开始老师拿我的程序跑要5s,就在他读程序的时候他电脑没电了。他去拿充电器,我瞄了一眼:5代i5U
他没找到充电器,于是我就去左老师那里。
他随便测了一个点,要1020ms
他说很接近喔。
然后judge了一下,就980ms过去了……
后面一个老师说这怎么算,左老师说当然是加分啦。
左老师的电脑是Macpro

第四题挂掉20分,复评那里看到无解输出-1,看错题+1
其他暴力也都少了很多分。

总结

失败在于忘记了DP这个东西,或者说第二题一直往数论方向想(其实数论够强也能出来),但没有想dp。
第三题看错题直接导致整题丢100分。
两题看错题外加前一天空间算错导致失分太多。
图论比较差,知道它是Floyd但没有想出来。

晚上

(这里说明了我忘记题目的原因)
先和ljj去逛了一圈,晚上八点前赶回酒店,群上说要开会,但没说几点。
然后等到了酒店,群上说九点半开始开会。
九点五十分,symbol说他出发了。
十点十分,开始开会。
开到十一点。
比我前两天睡觉时间晚了一个小时。

Day3

所以名单上有71个人多出来的那个71号就是我。

题目

T1

有n个人,每个人有三个值,同一个属性所有人两两不同。
当一个人有大于等于两个值大于另一个人时,就能获胜。
选两个人比赛,进行n-1场,问最终哪些人有可能活下来。
n <= 10 6

T2

一棵树,点n的父亲为n/2(下去整),边的权值为 a n 2 + b n + c
一次操作会使一个子树消失。
每次操作后求哪个点使得所有点到这个点距离和最小
n <= 10 18 , m <= 10 5

T3

有一个有向图。点数为V。
m个人,都要从1走到V。
有一个字符串,长度为n。
如果两个人的路径有边相交,就要产生一个不爽值。
两个人的不爽值为两个人名字的最长公共前缀的长度。
每个人的名字是那个字符串的一个子串。
m , n <= 10 5 V <= 100

T4

有一个黑白的网格图,黑点可能围出若干个岛,每个岛的人数为围住的白点数量。
所有岛通过黑格连成一棵树的情况。
黑点数 <= 10 6 (大概是这个?)

做题

第一题一看,不就是连边然后一个环上的就不行吗?
然而边是n^2级别的。
接着发现一个环上不行,而是tarjan缩环后出度为0的点。
但是边还是n^2级别的。
算了,60分也不少了。
看第二题就会n^2,想了好久怎么询问log然而并不会。
(后来发现其实50分的n<=10^6很简单)
第三题看完后想应该分成两个步骤,一个是求出有多少条不想交的路径,一个是二分答案然后判断是否可行。
很高兴试机打的SAM好像用得上了。
然而发现第一个子问题都不会。
第四题原以为是数据结构题的(规律),然而今年不是。
那岂不是没有毒瘤数据结构题?
但是好像也很不好做。看完就直接弃掉了。
第一遍看题用了一个小时。
回去看第一题,还是不会怎么减少边数。
第二题也想了好久,也不会。
第三题还是没有想到。往nlog复杂度上去想,什么都没有。
第二次也想了有一个小时。
然后去打暴力,60+20。
打完还剩一个小时,又什么都没做。

出来后有人说第一题线段树优化连边,第三题网络流。
我先懵了一分钟,然后大呼凉凉。

讲题

第一题就是线段树优化连边,第三题就是网络流。SAM也不用,哈希就能过。
第三题看到100也没想网络流。
第二题好像是有性质可以直接从根节点走到对应的点,删除也是。
那么就是log了,100分细节很麻烦,50分是水的。
第四题werkeytom成功弄到90分,不知道哪里挂了。
反正就是模拟暴力,考的和数据结构一样,也是代码实现。
成绩是60+0。
第二题不知道为什么WA了,没去复评(太困了)。
回家后直接睡了两个小时。

总结

因为前两天的爆炸,第三天心态很不好。
第一题的优化连边是之前做过的,而且也不太难。
网络流的模型也没有看出来,这个应该是因为比较长时间没有做网络流,这个要在备考前注意。
字符串学SAM学傻,哈希也忘记了。
第二题20分到50分几乎是完全一样的,……
第四题放弃算是正确?
反正还是自己太弱,到处找理由。

晚上

继续困,继续睡觉。

Day4

看名单我好想没有二等。
然后我是三等的第一名?
被之前某人说的某句话说中了五年。
被派去领铜牌,今年好像整个学校就这么一块铜牌。领下来就给haowarli了。

中午吃饭是十点半开始,于是平均吃饭时间维持在了正常的时间。

滚回去上文化课。

猜你喜欢

转载自blog.csdn.net/u011056504/article/details/80146171