ACM/ICPC 2016 北京站小记

这周六日在北京大学参加了2016年的最后一场ICPC区域赛。我们周五晚上乘坐T66列车从南京站出发,与此同时,平行世界里面同一时间参加ICPC青岛赛区的两队dalao们已经在青岛的海边玩了一个下午了。

赛题

首先我先切了D题,看到一半清恒说F水题能做,于是我跳到F题开始敲,调试居然不过样例,原来是operator<比较的时候用了两个this。
过了之后清恒给我讲他们D题的思路,认为最大减最小就行了,我觉得他们题目理解错了,这时候我已经有了想法,然后赶快敲完过了。
过了队友说K没搞懂什么意思,于是我去切K。接下来我们KE并行搞,E题通过的多,但是K题的通过率达到了惊人的100%。K题意思是问从1到N, N ≤ 10100里面有多少个数等于从1到N所有数中数字”1”的个数之和。题目给了样例说明前100000000000个数里面有83个这样的数,其中最大的是11111111110。这道题我一开始觉得是dp,后来发现数字太大了,不太好做,便放弃了。队友们接过K,觉得先打表。过了一阵子他们觉得10100里面也只有83个数,交了一发发现翻了低级错误wa了,改了一阵子过了。
这时候我在做E。E题是有个长度为5的由'0'-'9'组成的字符串,可以对这五个数字中任意一个进行乘2(总共3次)、加1(总共2次),和交换(不限次数),问组成”12345”需要的最少操作数,若不能就输出-1。我的想法是打表求出把'0'-'9'变成'1'-'5'需要的最少步数,然后再加上交换的次数。然后把五个数转成五个数的最小步数时候遇到了问题,这并不是一个贪心问题,我打算用bfs硬搞,算了算复杂度可能不行,于是尝试用图论算法(KM匹配)浪费了不少时间,最后时间不够了上bfs然后WA了,这时候比赛也结束了。封榜前我们是106名,想着今年据说Cu线改成605%了,应该能拿个Cu。不过后来发现还是45%的线,于是打铁滚粗。

感受

  1. 前面的队名叫latte,最后果然两题拿铁滚粗,这给我们启示比赛的时候不要喝拿铁(然而摩卡巧克力太腻,卡布奇诺有点苦)。
  2. 电子科技大学的一队拿到了AK两条的fb,于是怒拿冠军出线。这又一次给我们启示风水和气运很重要。
  3. pku发了一人4张的20元卡(实际上除掉手续费只有16元了)。表示很奇怪为什么这卡要搞三张,难道是一张卡上只有4bit么?后来拿到发现卡上有若干洞,不禁想到多年前看到的matrix67的这篇博文,有空算一算
  4. 感觉北大好牛逼,报到的时候送了每人一个纪念U盘和水杯,开幕式和颁奖poucher和GB都出现了(GB口语好差啊),比赛午餐是开封菜,一对辣翅一个汉堡,每人一个大橘子。北大食堂只开放了艺园和农园,据说是比较差的食堂,但是依然是便宜可口。我们比赛的邱德拔体育馆整个还是北京奥运会的装扮,比赛过程和结束主办方一直强调千万不要放飞气球啦~我们很难搞啦。
  5. 北京用的hihocoder做的judge,参赛时果然没给我们CB,尿壶也不好用,但是给了个eclipse,我觉得还挺好用的。
  6. 晚上在中关村吃了东来顺火锅,因为之前吃过北京火锅的,并不喜欢那种芝麻酱,但是在北京吃到正宗的觉得还是挺好的,关键是不腻也不算太甜。本来准备去全聚德买个烤鸭寄给我姐的,但是实在没时间了
  7. 卧槽宾馆好远啊,住在人大那边的如家,而且居然是个家庭房,开暖气好热啊。早上要坐几站地铁才能到。