五月八日在南京大学参加了第一届江苏省程序设计大赛。这次破天荒拿了7A。
首先是热身赛,第一条是最基本的dp,第二条是一个pq,第三条是带两个cost的dijkstra。
进入正赛,一般这种比赛都是AJ水题。我先切的A,A是摩尔斯电码的翻译,是一条手速题,我看完的时候学弟已经看完B题了。B题是给出二叉树后序遍历的第k项。学弟用了二分,不过讲题的时候说因为数据故意改弱了,所以可以直接建树暴力做。B题WA了下,等到做完我断断续续把A题敲完了,1A过。后来发现I是个水题,就是dijkstra,另外建一个map把站点映射成index就行了,正好可以用刚才热身赛的dijkstra,我写了个框架给zqh填dijkstra,不过这道本以为1A的题目居然卡了很久,最后还是学弟调出来的。中间看了J题,之前学弟第一个切了J,觉得J没见过难,我一看是个人肉pattern recognition:给一段话,要你分析出是English还是Spanish还是Chinese Pingyin。这个主要思路一个是特征词,比如西班牙语特有el,y,e,o,por这种词,另外就是长度判别,中文一定是长度小于6的,因为句子都是选自维基百科等的实际文献,而且长度都大于100个词,所以不要担心会产生误判。不过在写代码的时候WA了两次,有个坑,std::string的find会默认对pattern做trim,而trim之后,“y”也会同样匹配“sky”这样的英文单词了,所以得手写一个find,这里直接对find之后的index首尾直接验证有没有空格。J是倒数第二个A的,之前学弟有A了C和F。这时候zqh在推G题,G题是个类似博弈的题目,但实际上是推一个公式。