前言

alt


整体评价

有幸参加了第六届的传智杯决赛(A组),因为这个比赛是牛客协办,所以就写在这里。

作为Java选手,比赛中其实吃亏了,主要是T2吃了一发TLE,T4吃了一发莫名其妙的MLE。

整体比赛,比我想象中的简单一些,前四题比较典,后两题有区分度。

最后希望传智杯越办越好,也希望牛客承接更多的比赛。


回顾历程

参加2场初赛,1场复赛+vp一场复赛, 以及最后的决赛。

每场都是5/6,除了初赛打得有点随意外,复赛和决赛做不出那道题,是真的没办法。

而且复赛和决赛,总是上天眷顾,最后阶段磨出关键的一题。

所以感谢天,感觉自己,感谢主委会贴心地调大了获奖比列,^_^,下次还来。


榜单

A组榜单

B组榜单


题目


A.

签到题

太简单了,以至于忘了是啥了。


B.

签到,考察前缀和

就是输入输出的数据量有点大,但是Java IO写TLE,哭了。


C.

思维题

这题,其实我做过类似的,好像是去年的某一个场娱乐赛吧,来自于一个游戏,记得当时有讨论。

不过这题, 我一开始写成了

change("a", "c");
change("b", "c");
change("cc", "");
change("c", "odd");
change("", "even");

但是这个wa了,很隐蔽。

赛中我的一个直觉是,是不是空串不行,但是不知道为啥, 我换了种写法才过

change("a", "c");
change("b", "c");
change("ccc", "c");
change("cc", "even");
change("c", "odd");

D.

状压题,理论上,这题有点难度,但是无奈太板了。

令 dp[s][m][n] 表示当前在(m, n)位置,且二进制为s的状态

s为, 二进制上的1表示已染色。

不过这题,Java又被卡了(花式受罪)。

卡了一次MLE,我当时有些懵圈,幸好结果只是返回yes/no.

所以我用bitset替代了bool数组。

然后就过了。

赛后问朋友,说c++直接过,没听说卡内存的事情,T_T。

后来听说,很多同学都是dfs过,觉得不可思议。

仔细想了,其实DFS理论上界为, 但是呢,矩阵的强限制性,导致实际复杂度很低。

突然想起来一道, "黄金矿工"的题,好像也是这样。

出题人赛后提起这题说,dfs根本卡不住。


E.

第一次在比赛中使用 “对拍”的技巧,过的时候,真的很兴奋的。

这题出的真好,很多构造的思路根本想不到。

写了一个小数据的对拍程序,然后把不一致的case打印出来。

主要是

3 5
4 6

这两组数据上。

尤其是4 6

[1, 1, 0, 1]
[0, 0, 1, 0]
[0, 0, 1, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
[0, 0, 0, 1]
[0, 0, 0, 1]
[1, 1, 1, 0]
[1, 0, 1, 0]
[1, 1, 0, 0]
[0, 1, 1, 0]
[0, 0, 0, 0]

大概有这三种类型

当n很大的时候,其实考察的是组合数学,需要用到逆元了,所以真正拉开差距是这题。

赛后,出题人说这题是他今年最得意的出题之一,我觉得它配得上。


F.

第一眼以为 lazy线段树

然后在细看了下,每个mod不一样,感觉毫无思路。

时间也不多了,遂放弃。


写在最后

下次有机会再来参加。

许个小愿望:

  1. A组的人数有点少,感觉评奖上吃亏,希望能调大A组的获奖比例(主委会各个级别都调大了5%,点赞)。

  2. 比赛对Javaer/Pythoner更友好些。

alt