一场由yaolao主办,Sivon任首席技术官的校队高一年级OI组(升级?)选拔赛在大约5天前举行。参加比赛的大约有来自高一年级的十五位至少参与OI事业一年的同学。
//估计这一篇被选手看到的概率不大。。。
//主考又不进行说明。。。我就代为写个Report吧。
比赛题目共四道题,总分150分。
四道题本来我们打算是可以出得像市选一样的分数阶层。事实证明题目被我们刷得太简单了。
最高分102. 接下来有三四个80-99的。还有2个是70左右吧,3个是50+的。最低分0分。
一
题目是由Sivon神牛命的。命题时经过了高二至少五个人的建议,被至少三个人的程序刷过。应该是不会有什么问题的。期间题目改了若干次。
第一道延续了gXX神牛在KOI时教育我们的他出选拔赛的题目。“给一列数,给Q个询问,每次询问×××××××××……” 这次是,每case给N<=5000个数和M<=5000个询问Q x,每次询问数列中大于询问参数x的数的数目。据说高二级的Hang神牛因为看题不仔细看成A[i]<x就WA了半个钟头。显然可以O(nm)的暴力法。有关暴力法稍后还会说。或者可以先排序再m次二分。或者双排序+一次扫描。
第二题。给平面上一些点(N<=100),求三点共线的数目。本来Sivon同学的想法是,要排除四点共线的情况。那意味着要极角排序。。。。然后由kimiyoung神牛主持简化成了不排除的版本。大概做法是枚举三个点判断共线,然后把斜率公式改写成乘法形式。如果不改就会惨烈的8个点浮点数错误(比赛时显然有人这样。或者加特判)
实践证明这样高度统一的标程容易出问题。我是出卷到一半时加入的。我这道题直接用cmath的atan2函数求极角。我当时写着四道题+调试对拍用了1个半钟头。其中很主要的原因就是这道题。题目没有提到有点重合时算不算共线等问题。后来向Sivon验证才知道problem statement里没说是因为本来就应该是不重合的。重新改了数据。AC。
第三题是一道我见过的FXOI“海关顶”最短路。sivon神牛认为这是四道题中最难的一道题。所以我们都只写了AC的贪心法(Dijkstra)或者spfa。。。因为参数的限制这道题的数据不得不很水。(本来这道题就是一道搜索题,实践证明随便暴力搜索也可以拿至少6个点)
第四题给出一个数字的集合,求从中选出若干个元素的和模给定模数M为0的方案数或者输出一个方案。元素数<=30。模数小于几十万吧。
这道题原本是打算让人骗分的。本来只输出是否可能整除YES/NO。随便cheat一下就可以拿20分(第一版的数据为了平衡是20:20)。后来我们都觉得这样不好。就改了。当时Sivon希望这道题可以被使用搜索(他的标程有一道是搜索),我提出能否这样,把方案数S<=5的输出方案书目,否则输出Too Many。不可能输出No。这样把no和too many卡在12分以内还是容易的。
但是sivon神牛觉得还是太麻烦。最后secD提了个很好的建议。改成Special Judge题。对于每个yes的点,选手可以选择输出任意一种方案或者输出方案数。然后我就把我拍的动规改了一下,一边记录方案数一边压成一个int记录30个元素是否选定的一种方案。//很仁慈,如果把N开大点比如100再开大模数,就不能通过保留整个dp数组回溯来输出方案,就必须用这种压位了。(当然直接滚动还是可以输出方案数)如果只输出Yes和只输出No是一样的,都是8分。Yes和No之比是4:1.
二。
比赛时间推迟了若干次。
最后比赛的时候,Sivon同学没有在学校。
现场是由我和secD负责的。现场的配置很费时间。因为C4里教师控制端有问题,所以不能用student监控或者统一安装软件。(其实比赛时yaolao断掉了某只交换机)用cena-client有安全问题(随便开个cena就把别人的程序收了)。最后我们手收。
刚开始有个小插曲。rar的密码被secD报错了。他们绝望的发现断网后那个密码是不对的。不过很快在半分钟内更正了密码。
之后开始有人说她不会用文件读写。第一个举手的yaolao还在,她指示先写最后再解决,然后yaolao离开了。马上又有四个举手说不会……
然后还有很多人文件用得不三不四。最后我们现场决定先收起来再帮他们改各种文件读写问题。
但偏偏有人沉不住气,3次Error104后,在第一节晚修结束时放弃了交卷走。另一位同时走的程序写得挺不错。
现场的fp也有问题。JZ C4的机子在上次和谐后就都有问题。即fp的配置文件不对。必须把目录改到D盘新建config才能编译。于是又是一阵举手流。。。
Sivon神牛原打算把pas发给他让他用自己的电脑测。但是因为手收和以上原因就没办法了。
然后我们先测了第一次交的程序。然后都是0分。我才发现cena上把文件名弄错。改正后一位AC了一二道70分。另一个帮她改了一大群文件读写,最后也是十几分吧。究其原因(当时程序很少,所以可以究之)第一题循环变量上界写错,第二题判断共线的背错,第四题的Yes没有按照题目要求的大小写。。。
当时我们一再强调不得作弊。但是事后证明这种情况还是出现了。with lots of mates playing CS,我和secD几乎不可能仔细关照整个机房的情况。
9:50分结束。总时间大约2:45分钟。比我们预计的短了15分钟。
三
接下来是昏天暗地的改程序,测程序。
完整的记录下了哪些程序改过文件读写。
测得了成绩。
成绩比较让人意外的是第三四题。原本以为会卡人的第三题反而那份较高,而第四题大家都深谙Sinya神牛教授的骗分之道拿个Yes或No。
事后才发现实在是第三题数据太水。几个很随便的贪心都拿了很高分。一个还AC了。
有个常年混竞赛班的师弟把第一二题写挂得八分,最后两题拿了80分中的68分……
第四题发现他们基本上都不会写方案数的DP。原本打算适当奖励加分的就不可能了。写的大多是我看不懂的非递归回溯。
当我检查第三题得分时,我突然想看看并列第二名的程序。打开了。程序极为相似。截图之。
怀疑是使用u盘复制?
幸亏我这样查看了。。。
我们于是检查了所有相邻座位的程序,发现至少三组设计7个人的程序雷同。其中涉及很多70
分以上的人。其中很大部分还是可以辨认是谁抄谁,但是怎么抄的就不知道了。
还有更自以为聪明的。在程序里插了几行{----------------------------------}的性感的分割线……
整场下来只有一个人的一道题是TLE的。第三道题的最短路写的是Floyd。经测试在机子上时限调为2s可以多4分一个点。显然如果拿到主流机子上测试一定会过这个点。但是最后鉴于Sivon神牛又回来了不方便测试就算了……
四
yaolao到底依据比赛选了什么人呢我不清楚。。。。。。
对了,secD神牛一直说第一题的nm暴力法“很神奇我都想不到”……
然后secD还向我们分析了三个女生都不涉及程序雷同。以及她们的程序随手一改就可以多不少分。
空虚过了。
|