zoukankan      html  css  js  c++  java
  • 浙江财经大学第十四届程序设计竞赛命题感想

    题目和题解点这里:http://www.cnblogs.com/zufezzt/p/8648892.html

    24号,学校一年一度的程序设计竞赛结束了,这一次是我和两个学弟命题的,还有一些人进行了题面书写、review,还有一部分人帮忙进行了验题。所以我想记录一下这次命题的详细过程,以后可以成为一次美好的回忆。


    大概从元旦前夕开始,逐步有了一些 idea,有些很 easy,有些很难(估计是我太菜了)。大概在过年的那段时间,有了一些比较好的 idea。接下来逐题说一下每一题的 idea 诞生过程,感觉每一题背后都有一些小故事。

    A 题:这题是比较晚才确定的,当时缺一个简单的贪心签到题,而我那时几乎又被榨干了,所以我让两个学弟(张海栋,王豪)去摸索 idea,结果他们给我说了 6 个不同的版本,这题是其中一个版本。之后张海栋进行了一波严格证明,表示排序一定是最优解。(如果没法严格证明,我们就要换题了呗)

    B 题:这题是在寒假期间确定的,由王豪提供 idea,感觉这题还是不错的,看着好像很慌,仔细画一画发现并不恶心。

    C 题:这题我拿来凑数的。感觉这题出的是最烂的,很无聊。不过在写 std 和出数据的过程中发生了一些比较有趣的事。

    D 题:这个游戏一般参加过学生会或社团的同学应该都玩过。然而王豪在一次玩这个游戏的时候,想到了这个问题。仔细分析并不难,可以归结到经典的 nim 取子游戏。感觉这题比较接地气,毕竟游戏规则大家都懂。

    E 题:这题的 idea 诞生比较扯淡,寒假里有一场牛客网比赛Wannafly挑战赛10,其中的 B 题,当时看错了题意。看错后的题意就成了这个 E 题。

    F 题:这题也是比较晚确定的题,当时缺好几个 easy 题。我就开始疯狂想 easy 的 idea,然后就有了这个 F 和最后的 M。这题王豪直接扔了一个简单优美的公式搞定了。

    G 题:这题原本不是这样的,最初的 idea 是给出一个矩阵,可以把 -1 替换成你想要的任意一个数字,然后最终得分是每一个连通块大小平方的和,想了半天不会(如果有大佬会还请留言)。后来我把矩阵换成了序列,就可以搞一搞了。这题是这场比赛中我觉得最棒的一题了。

    H 题:这题也是自己想的 idea,不过 HDU 的岑肃廷大佬说这题是 WF 的弱化版。当时想到这个 idea 时,并不知道 WF 题长什么样。这题最初的版本:平方那部分是绝对值,这样可以斜率优化搞。改成平方和,斜率优化好像不能来了,但决策单调性并没有被破坏,因此就这样了。最后顺便和王豪把 WF 那题也撸了一下,确实那题好强啊。

    I 题:这题最初的版本是个一个长度为 10 万的字符串,在这个字符串的所有排列中,找到字典序第 k 小的,k 有 1e18。后来发现这个版本很不人性化,写代码的时候要判爆 long long 之类的,所以弱化了一下,改成了这题现在的样子,比较和谐。

    J 题:这题是放寒假之前,有一次和学弟去吃中饭的路上瞎聊聊到的,“欧拉路径是每一条边走一次”,“哈密顿路径是每个节点走一次”,“那么欧哈密拉顿路径呢?岂不是一条链。”,然后这个 easy 题就有了。

    K 题:寒假在家闲着没事干,瞎想。于是题目来了。

    L 题:这题一开始的版本不是这样的。那时候觉得缺一个构造题,于是我就乱想了一个题。就是把这题去掉 4,5 两个条件。正常人几分钟就知道怎么搞了,定位为 easy 题。王豪觉得太简单了,加个对角线的条件试试,后来他开始手动构造,构造出来了一些,但没有发现明确的规律,于是乎我们开始爆搜,他一开始写错代码了。我上了几发之后,发现爆搜贼快。于是这题就有了。

    M 题:同 F 题,同一时期想出来的 easy 题。这题有两个版本,这个版本比另一个复杂一些,还带一些坑,所以有用这个版本了。


    idea 想完后,我回到了学校和他们开始了正式出题工作,这题命题流程较为规范,我们用了 codeforces 提供的命题平台 —— polygon。真的是一个非常好用,非常棒的平台,帮助我们大大提高了命题的效率以及准确性。由于命题组英语水平较为奇特,我先分配了几题分开写题面,王豪英语水平好像还是我略高一些,所以我让他主要负责写 validator(数据范围合法性验证) 程序,std(标程) 程序,以及生成数据的程序,以及一些答案错误,超时的程序;在他写程序的同时,我和张海栋疯狂写题面,感觉我这种英语真渣渣简直要疯了;史海虹大佬由于平时业务繁忙,我分配给他了几题题面的书写(D题,F题,M题),包括在后期 review 的时候,史大佬的题面是改动次数最少的,不愧是读过书的高级知识分子!

    在题面搞得差不多完工的时候,我们找到了陈铭洲大佬帮忙一句一句 review,经过一番大改动,题面终于能让人看懂了。(我很佩服他是怎么看懂题面的)

    下面讲一下每一题在出数据,写题面过程中的小故事:

    A 题:张海栋抄来一段孟姜女的故事,经过一顿修改,有了故事第一段,我给他配了几张图,然后题目主要部分写的看不懂,我和他就改造了一下,差不多是最终看到的那样。造数据倒是没什么奇葩故事发生,后来张海栋证明做法的正确性。

    B 题:一开始题目不长这样的,我给王豪看了个什么东西,他突然灵感大发,来了这个 idea,我听了之后好像觉得不错,就留下来了。造数据好像也没发生什么奇葩故事。

    C 题:这题我先写了一段中文题面,然后交给张海栋去写英文题面了,写完还配图,真贴心。他造完数据,写完代码,跑数据,发现死循环了,后来发现存在负环,spfa一直在那绕圈圈,出不来了... ...于是乎他去研究消圈算法,未遂。
    “出题人不会做怎么办?”
    “那就改成有向无环图呗,不就会了。”
    希望有会的大佬教我们一下。

    D 题:中文题面我写了一波,交给史海虹大佬去翻译了,翻译完了简洁明了,非常到位。造数据好像也没发生什么奇葩故事。

    E 题:这题数据和题面都是毒瘤,第一版题面是我和张海栋写的,英语太烂了,表述的很烂,后来陈铭洲大佬帮忙大改了一通题面,有了现在的样子;这题出数据是个技术活,反正各种搞。。搞了一大堆数据进去。。

    F 题:史海虹大佬写的题面,太强了;王豪负责造数据。好像他造完之后答案没爆int?被我加强了一下,记不清了。反正把一些浮点数做的卡掉了,写的不好会掉精度,整数运算最稳。

    G 题:我亲手写的题面,真的是要命了。。读题者估计一看就能发现题面画风和先前的不一样,因为这是我写的。。。。在最后快完工之前,我造了不少数据,张海栋手造了几组。

    H 题:这题题面很短。王豪造了一波数据,我就故意写暴力,AC了,然后加强数据。

    I 题:张海栋写的题面。王豪造数据,我记得他手动造了很多数据。

    J 题:张海栋写的题面。王豪造完数据之后,发现两人代码好像跑出来结果不一样,王豪发现张海栋没考虑到一条链一个环的情况。然后让我写,错了两次之后我对了,然后他们开始修他们的bug,最后我还加强了不少数据进去。和张海栋也手造了很多。

    K 题:我写的题面,让王子恒和杭电岑大佬验的题。出数据好像没啥故事。

    L 题:我写的题面,我写的 SPJ,王豪造了一波数据,王子恒验题是发现数据水了,没有出 K<0 的数据。。。我后来和王豪又加了几组。

    M 题:史海虹大佬写的题面,某天晚上张海栋发现此题有坑。王豪造的数据,我去验题,我故意写错的代码,发现 AC 了,写暴力模拟,也能 AC,然后发现王子恒错误代码也能 AC,于是我先加了几组数据进去卡掉了这些错误做法,后来大半夜的,张海栋又加了几组超强数据。

    最后几天,不断的 review,不断尝试错误解法能不能通过,感觉我们这种鶸出题目真的是开头难,中间难,最后更难。最后几天一直担心会不会我们的思路是错的,导致出了个错题;会不会数据不够严谨,导致暴力,或者错误的做法水过去... ... 好像从已知情况来看,没有发生这样的问题。

    最后再说说现场赛的情况:
    这次现场赛邀请到了浙江理工大学,鲁东大学,烟台大学来参赛,不说别的学校了,我们学校好像略微有一些惨淡,我们认为的 easy 题,没有一个队伍撸完的。别的题过不了就不说什么了,可能有一些脑洞没想清楚,但是 J 题真是个不能再 easy 的题了,但是校内集训队大二成员竟然没有一个队伍提交?!我们是被惊到了,明明人家理工早就 AC 了,为啥不去看看这题呢,看了就过了。反而大一的吕效华、蔡怡帅、李欣阳队伍有 8 次提交,好像他们思路和坑点都想清楚了,但他们被 memset 卡超时了,我觉得挺好的,下次再碰到以这样形式给出的数据范围就知道不能 memset 了。本身预计大二的队伍可以撸 7 到 8 个题,但事实上好像差了好多,当然这个和他们拆开组队也有很大关系的。

    我快毕业了,这估计是我第一次也极有可能是最后一次花了那么大力气来弄一套还算能看的题,好像里面并没有什么很奇葩的算法(因为我和两个学弟都是鶸,高级算法和数据结构都不怎么会),整套题的感觉应该是思考 > 知识。

    陈老师希望我出的题可能是一些类似于水仙花数的题,但我觉得那样的题一来浪费命题人的时间,二来这些题目没有什么价值,应该放在课程教学里的吧,而不是放到竞赛中来,三来对参赛选手来说没什么有趣的地方,即使过了这题也不会有什么快感吧。像这次的 B,F,M 题,对于一个没搞过 ACM,或者搞过一点点时间的人来说,都是留有机会 AC 的。我看到在赛场上,很多人在 M 题上搞了好几个小时,每次提交代码之后按着 F5 刷新网页满怀着希望,看到返回 wa 之后的沮丧,但他们没有放弃,很多队伍在 wa 了七八次,甚至十多次之后,当网页上跳出 Accepted 的那一瞬间他们肯定很激动吧,一定是非常有成就感的,因为这是凭他们自己机智的思维得到的成功,即使没有 AC 很多的题,我觉得这是 ACM 竞赛真正想要传递的精神。

    最后,再次感谢王豪,张海栋,王子恒,陈铭洲,史海虹,岑肃廷和我搞了这件事情,把浙江财经大学的题带到了牛客网上,谢谢。

  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/zufezzt/p/8649865.html
Copyright © 2011-2022 走看看