前言
整体评价
有幸参加了第六届的传智杯决赛(A组),因为这个比赛是牛客协办,所以就写在这里。
作为Java选手,比赛中其实吃亏了,主要是T2吃了一发TLE,T4吃了一发莫名其妙的MLE。
整体比赛,比我想象中的简单一些,前四题比较典,后两题有区分度。
最后希望传智杯越办越好,也希望牛客承接更多的比赛。
回顾历程
参加2场初赛,1场复赛+vp一场复赛, 以及最后的决赛。
每场都是5/6,除了初赛打得有点随意外,复赛和决赛做不出那道题,是真的没办法。
而且复赛和决赛,总是上天眷顾,最后阶段磨出关键的一题。
所以感谢天,感觉自己,感谢主委会贴心地调大了获奖比列,_,下次还来。
榜单
题目
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为 [ 0 , 2 m ∗ n − 1 ] [0, 2^{m*n}-1] [0,2m∗n−1], 二进制上的1表示已染色。
不过这题,Java又被卡了(花式受罪)。
卡了一次MLE,我当时有些懵圈,幸好结果只是返回yes/no.
所以我用bitset替代了bool数组。
然后就过了。
赛后问朋友,说c++直接过,没听说卡内存的事情,T_T。
后来听说,很多同学都是dfs过,觉得不可思议。
仔细想了,其实DFS理论上界为 O ( 4 20 ) O(4^{20}) O(420), 但是呢,矩阵的强限制性,导致实际复杂度很低。
突然想起来一道, "黄金矿工"的题,好像也是这样。
出题人赛后提起这题说,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不一样,感觉毫无思路。
时间也不多了,遂放弃。
据说难度系数对标 CF 2700,金牌爷亲自出的题.
完全不给活路…, T_T
写在最后
下次有机会再来参加。
许个小愿望:
-
A组的人数有点少,感觉评奖上吃亏,希望能调大A组的获奖比例(主委会各个级别都调大了5%,点赞)。
-
比赛对Javaer/Pythoner更友好些。