AtCoder Regular Contest 123 比赛记录(vp)
首先提出,令我十分不解的两件事
- 为啥 Cry_For_theMoon 这么强
- 为啥 Cry_For_theMoon 这么可爱
感谢这位学妹,给我提供了很多帮助!!谢谢www
同时,她也让我认识到了我的菜。
比赛情况
赛时AC:A,B
赛后补:A,B,C,D
暂时我的水平还只能补到D题,E题可能得再修炼一些日子。我现在就算能(对着题解)把代码打出来,理解的也不够深刻,我能感受到。
如果是早期的题,我甚至能会到agc的f,但是现在的题似乎难了一些qaq
题解
A,B连我这种傻逼都会,略
C: 1, 2, 3 - Decomposition
注意到 (3^n) 差不多就是 (10^n) 的根号。所以写个暴力dp是根号的复杂度,可以做到1e5。
打一波表发现,好像答案都 (le 5)。
然后我们考虑这样做:如果能一步,就输出 (1);能两步,就输出 (2)...判到 (4) 步还不行,直接输出 (5)
注意到,每一个 “123” 数都可以写成 (sum a_i imes 10^i) 的形式,其中 (a_iin {1,2,3})。那把它们(直接)加起来,不做进位,每个 (10^i) 前面就会得到一个系数 (c_i)。
假设我们有 (k) 个 “123数” 加起来,那么 (c_iin [0,3k])。
关于为什么不是 ([k,3k]):注意到每个数不一定等长,如果当前的这个 (i) 超过了一部分数的最高位,而没超过另一部分数,那这个 (c_i) 就可能小于 (k)
写四个函数,check1,check2,check3,check4,分别检验:一步,两步,三步,四步
注意到 (3) 步以内不会发生进位,因为 (c_iin [0,3k=9])。此时只需要看一下每一位对不对就行了。
对于 (4) 步的情况,(c_iin [0,12]),顶多进一位,把进一位的情况考虑一下就行了。
注意一个细节:如果碰到了前导0,那么我们需要考虑 (k) 变小的情况,因为可能有些数就没了
比如我们check3的时候,抹掉了最后一位,那么我们在递归的时候应该算
check1 || check2 || check3
D: Inc, Dec - Decomposition
我是参考了我学妹的做法,见 这里
妹妹又强又可爱,我prprpr
比赛实况
昨晚没睡好。我开始比赛前,洗了会脸,泡了杯咖啡,一口干了,才在8:40,开始了比赛。
我15min就秒掉了前两题,但是卡在了C。
卡到了40min左右,(按NOI比赛的经验)我意识到我不应该卡题,就去看了D:然而我并不会
根据上一次打比赛的经验,我隐约感受到它应该有一种神仙做法,但是我没想出来。我当时心态也慌了,CD切换着想,不定心。
注意到,给大脑开两个线程,是非常耗脑力的。再加上我休息不足,一杯咖啡也显得杯水车薪:比赛到1h多,我直接睡着了
我睡了多久呢?根据ManicTime显示,我从9:51:21,睡到了10:52:50,睡了1h多,睡到了比赛结束后的12min。
zps!你他*在干啥啊草,比赛还能睡着的吗?你到正式比赛咋办啊!!!**懒狗快他娘醒醒啊草
问题/总结
问题
心态乱,时间分配不当(对于CF/AT的比赛)
休息不足,身体跟不上大脑
思维不够敏捷,现有想题体系只能勉强应付OI比赛风格,不能适应AT的比赛风格
反思总结
(和上面对应)
时间分配上,不需要急,先把sb题做了,然后不慌不忙的做后面的题。也许会做不出来,但心态不能乱
好好休息,平常多注意锻♂炼
我还too young too simple,再多练练吧