zoukankan      html  css  js  c++  java
  • 2014 ACM-ICPC 亚洲区域赛 鞍山赛区 比赛小结 & 部分题解

    鞍山赛区比赛终于结束了,擦边打银。。也是沾了今年校队的运气吧,差一点以为是铜首了==。和东北也挺有缘的,前两次参赛都是东北赛区(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:

    水题,按题目说的做即可

  • 相关阅读:
    MapReduce-shuffle过程详解
    YARN中的失败分析
    HBase协处理器的使用(添加Solr二级索引)
    Flume具体应用(多案例)
    Flume架构及运行机制
    python Cmd实例之网络爬虫应用
    mongodb3 权限认证问题总结
    webpack配置
    apt软件包管理
    python笔记之编程风格大比拼
  • 原文地址:https://www.cnblogs.com/xysmlx/p/4043143.html
Copyright © 2011-2022 走看看