鞍山赛区比赛终于结束了,擦边打银。。也是沾了今年校队的运气吧,差一点以为是铜首了==。和东北也挺有缘的,前两次参赛都是东北赛区(2013长春、2014鞍山)
分工:我主敲+图论+网络流+搜索+模拟题,ly负责数据结构+DP,dlj负责DP+贪心+几何+乱搞题
鞍山日程安排也真紧凑的,周五晚上10:45的火车,周六早上7点多到,然后到了火车站吃了个KFC当早餐,就做辽科大校车去沈铁千山疗养院了。。(志愿者车站接站,nice!)
到疗养院才知是四人间。。。好吧,四人间可以承受,but还附送各种小动物==
中午在疗养院吃了自助午餐,午餐还是挺不错的,红肠真心好吃~
下午去辽科大逛了一圈,外加热身赛(仅出了1题,做过的题认不到。。。,热身赛题解参考2013年多校联训3(clj出的那一场),题目基本都是那上面的。。。)
不过东北的天黑的真快,5点多就黑了。。,然后做一辆很霸气的校车(车头特别长)回疗养院,路上看到一座酷似白宫的建筑,233333
晚上竟然不到11点就睡了,今年睡的最早的一次。。。
周日早上7点起来吃个早饭,然后出发去辽科大,9点开始,我从前读,ly从后读,dlj从中间开,读到C题,感觉可搞(事实证明最后卡死在这道题上),给dlj和ly讲了题意,他们就去想了。然后刷了一下榜,看到I题过了一片,我就去读I题了,发现是签到题,14min 1A,开场较顺利。然后刷榜,发现E这时也过了一片,我去读了,给dlj讲了题,然后想到一个dp,给dlj说了一下,感觉可搞,然后敲了1A。再次刷榜,看到D题有人过,ly说之前没读懂,让我去读一下,读了发现很像长春的I题的思想,一段一段地动态更新应该可搞,给ly和dlj说了题意和一些想法,他们也感觉像动态更新,然后dlj和ly就推了一个公式,$O(N)$的,然后我去敲,十几分钟敲完发现过了sample但是中间变量数值不对而且不过自己造的数据,然后开始单步调试模式。。。一个变量一个变量地输出调试。。。调了好久,发现过了sample以及自己造的数据,这时差不多有1h了。。。交了一发,WA,这是ly问我有没有sort,我才发现少敲了一个sort(因为输入数据不一定有序),加上sort就过了。这时差不多剩2个半h左右,刷榜发现B、C题有过,ly说B看起来像大模拟,就让我去搞了,他们推C。读完B题发现数据只有5000,$n^2$暴力可搞,然后就手写一个队列,每个操作都是$O(N)$的,敲完,测了数据发现过了sample,因为这题数据不好造,就交了1发,WA,这时还有1.5h,打印一份代码,正好ly他们想到一个算法,就换ly去敲C题。我对着题读了两遍代码发现代码没有问题,然后又重新读了一遍题,发现题目结尾说clj只给说过话的窗口发送bye,这一点之前没有看到,然后去加了一句if,交了,返回Yes,很兴奋,这时刚刚封榜,还有1h左右时间,排名估计在银牌尾部。这时感觉C题决定一切了,也没有时间开新题了,出了C肯定有银,甚至能否冲一下金?(因为罚时很低),没出就很可能是铜首了。而且出C感觉还是挺有戏的,ly就继续敲C了,还剩40分钟时ly说算法有问题,讨论结果发现算法少算了情况。。然后三个人就集中到这一道题上了,讨论发现算法错了,没法完整计算所有情况,必须得用容斥(而我们三个没有人搞组合计数。。容斥只有理论,没有刷过题)。。这时还有不到20分钟,然后我就想了一个$N^2$复杂度而且常数还很大的算法,就想去试一发,ly敲了一发,没过sample,调了一下,过了sample,交了,WA,然后比赛就在“交-WA”的节奏中倒计时结束了。。。本来想到肯定是铜的前几名的,所以做完后心情很糟糕,直至闭幕式刚开始芳姐告诉我们是银,没有滑到铜,心情才好了一些~
这次比赛暴露了我们队很多问题:
1、水题应该我和ly交替敲,一个人读+敲太浪费时间
2、我们队缺失搞组合数学和数论的,ly用接下来的一个月去搞
PS:辽科大的志愿者真心nice,全程陪同,各种帮忙。
明天开始恢复训练,希望广州赛区能比得更好!(广州赛区结束后将总结的模板整理放出~)
/**************************************************************/
部分题解:
B:
大模拟,由于数据只有5000,所以直接暴力搞,每个操作$O(N)$即可,下来听说buaa昂神队用SBTree过的,吓尿了,orz
坑点:
1、注意top只是一个标记,并不改变窗口在队列的位置,其他操作是改变窗口在队列的位置;
2、clj只给说过话的窗口发送bye。
D:
贪心策略:将k个放在最终的质心上,所以这K个结果是0;最终计入的n-k个一定是连续的。
从第一个元素开始不断选取连续的n-k个,找质心(可以从上n-k个-1+1地O(1)更新),用曼哈顿距离算(而不是欧式距离,因为曼哈顿距离是线性的,可以O(1)更新;而欧式距离是二维的),得到曼哈顿距离最短的n-k个元素,for一遍算最终结果
E:
dp[i][j]表示扫到第i个元素,序列尾是j
状态转移方程:$dp[i][j]=max{dp[i][j],dp[i-1][k]+score[k][j]}$
I:
水题,按题目说的做即可