第42届ACM国际大学生程序设计竞赛 亚洲区域赛 西安站 总结


今年暑假集训结束的时候我们队在UESTC-ACM Div.1里排名第6,所以获得一场ICPC和一场CCPC的现场赛资格。

由于上半年5月打过西安的邀请赛并取得了一块银牌,笔者那次毕竟是第一次打区域赛级别的现场赛并且拿到银牌还是很欣慰的,

所以对西安站挺有好感的,于是打区域赛的时候还是选择了西安站。


------启程 2017-10-27

本来是16:10的火车,但是稍微在路上耽搁了一下,然后由于以前来回学校和家里都是做飞机的,导致并不熟悉做火车的流程。

在16:06的时候赶到检票口的时候笔者的那个班次已经停止检票了⊙﹏⊙‖∣,当时才知道火车会在启程前5mins停止检票,也算收获了经验。

之后赶紧手机百度了下,上面说火车启动前可以改签,但车走了之后就不能改签了,说是这张票废了。

所以用手机app重新买了一份,本来显示有票的,然后付了钱之后说是没有票了,钱立刻就退过来了,只能重新买,

然后重新买票的时候......说已经买了冲突的班次不能继续买票,也就是前面的班次虽然钱退回来了但订单没有取消。

从未遇到过这么麻烦的乘车事件,很令人着急-_-||。

只能去售票大厅服务台了,工作人员叫笔者去售票窗口取消那个订单然后改签,原来错过时间的火车也可以改签,手续费只要几块钱,

这真是太贴心了,感人。然后钱包丢了,不过还好找到了。出发那天真是一波三折..。


------第一天 热身赛 2017-10-28

由于改签过火车所以很难准时赶到参加第一天的热身赛了15:30-17:30,不过还好在16:15的时候赶到了比赛现场。

比赛场地在体育馆,布置的还是比较好的,有个大屏幕专门用来做比赛计时。


热身赛3个题,准时赶上火车的队友lzy已经过了A题,正在写B题,所以迟到的笔者和LinPC就看剩下的C题了。

C题看上去是一个奇怪的数据结构题,但考虑到潘爷只用了5mins就过了那题,

所以应该不是常规方法,后面猛的发现这题的数据范围不是5e5,而是5e4,毕竟给的时间限制是3s,

然后这里暴力O(n^2)的算法2.5e9应该是没有问题的,lzy过了B之后快速的写了发C,果然是暴力。

这题应该是热身赛的时候故意留给我们测试比赛机器的运行速度的。

热身赛后潘爷告诉我们这里CE(compile error)不算罚时,挺好的,毕竟CE算罚时就太可惜了。


------第二天 现场赛 2017-10-29

为了能准时的从宾馆赶到比赛场地6:30就起床了,大概有一年多没有这么早起床了,哈哈。不过精神状态很好,很稳。

9:00的时候准时开始比赛了,很快一大波人过了B,所以lzy也去看B了,笔者去看J题,LinPC看K题。

之后B题CE了3发,由于队友交了Linux可执行文件而不是cpp导致CE,幸好西安站CE不计罚时。在第14min的时候顺利的过了B这个签到题,成功签到。

然后笔者看了J题之后觉得这题应该是个组合数学题或者dp,所以交给了这方面比较擅长的LinPC。

这时很多人过了F和G,笔者不大会博弈论所以去看G,lzy看F。LinPC表示J题可以用组合数学+dfs枚举来做,所以上机去写了。

然后lzy表示F是个结论题,总结出一个公式,所以LinPC把电脑让给lzy,果然第47min的时候几行代码就把F过了,然后LinPC继续写J题。

笔者和lzy继续看G题,这是很长一段时间没有想法⊙﹏⊙‖∣。第60+min的时候LinPC写好了J在调试。笔者趁机看了下榜,发现H题突然过了很多人。

所以赶快看H,看完觉得是贪心+线段树区间查询和修改,和lzy交流了下确认是这样,但考虑到J比较花了1个多小时了,打算等他过了J笔者在去写H。

还好第77min的时候LinPC用较为暴力的方法过了J题,然后笔者赶快写H题,第104min的时候一发过了。

lzy和笔者对于G题都没有什么好的思路所以就把G丢给了LinPC,

我们去看没有看过的题里过题最多的A题,看完之后,对求区间[l,r]内的异或和最大的子集的异或和表示很没办法,

用自己知道的数据结构都没有办法处理,过来一段时间发现K题过的人也多起来了,所以去看K题。

K题是给出a和b这2个数组,给出q个询问]l,r],稳b的[l,r]区间内的元素能否完全匹配到a,使得bj+ai >= k,且ai中的元素同时只能和一个bj匹配。

感觉比A题要简单些,所以笔者和lzy开始思考K题。这时LinPC表示G题会做,可以用类似线段树区间合并的方法来构建线段树,和lzy讨论后确实觉得可行。

所以开始写了,TLE了2发,笔者表示G题的%用的次数有nlogn次,对于这种比较卡时间的题最好优化一下,

提议用优化过的mod()来代替%,然后队友表示发现把把nlogn优化到n次取模,然后优化了一下果然在第195min的时候过了G,万幸过。

经过笔者和lzy讨论后表示K题可以做,用离线处理+线段树维护,然后巴拉巴拉处理之后可以在O(nlognlogn)的时间范围内得出答案,

所以笔者写好了这题需要用到的那种线段树后交给lzy写剩下的操作,写好以后发现有点小情况处理不了,所以停了下来。

封榜前我们队过了5题,相对还是比较顺利的。

然后我们看了下榜,至少过6题才有希望拿金,故继续怼A和K,A题三人都没有想法,

笔者表示应该是自己没有学过的一种数据结构或者操作,所以大家一起看K,

后来发现可以先把[l,r]内都标记为-x,表示之后需要有x个匹配,每次匹配成功就把一段区间都减一,队友再次确认表示可行。

所以笔者再次调了下线段树操作,然后lzy开始该k题。后来终于过了样例,笔者提醒过a数组是1e5但b是2e5,

但lzy大概忘了处理些,所以都用的1e5,交上去RE才发现,

然后改了b的大小,然后RE,..发现线段树等其它地方也应该都开成2e5,所以索性把MAXN改成了2e5,在交一发,成功wa了,

笔者顿时想到,多组数据测试,会不会是这个kase到下一个kase的时候有数据结构没有情况,

......果然vector用过之后没有clear(),然后改了之后又交了一发。

交K的时候都是三个队友紧紧盯着屏幕,万幸几分钟后在第290min的时候测评系统发挥Yes,

当时我们三人都鼓掌了,这个时候过了K简直太棒了,金牌还是有希望的。

但过了很久才滚榜,真是好大一个悬念,由于我们罚时比较多,6题里排的并不靠前,

所以很想赶快开榜,赶紧知道结果。最后滚榜的时候,快滚完银牌区的时候,看到一个队一个队的往上跳,这真叫人揪心,

还好滚榜在排在我们后面的一个队伍的时候停了下来,银牌区揭榜结束,我们成功拿到了金奖的最后一名。

很幸运,第一次打ACM-ICPC亚洲区域赛就拿到了金牌,太感谢了。



1、封榜后不送气球所以这里5个气球^_^



2、左边lzy,中间LinPC,右边笔者自己ProLights



3、附上奖牌,奖牌给队友了,所以笔者拍个照留作纪念,毕竟奖牌一个队只有一个,而证书每队员都有。





  Thank you!

                                                                                                                                             ------from ProLights


  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值