Warning: session_start(): open(/tmp/sess_d0eb592187714558b6c9c49a487fcd90, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239
Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/Action/Export.php on line 103
**yjh总结**
个人流水
* 开场读题,A题干没仔细看一看样例,应该是签到题,仔细看了看,只有加法,都是9位数,不用高精度,那就是签到了,确认题意后开始写(真的不想写这种东西),大概24min的时候写完了,中间还调整过几次记录方式等思路(可能签到题边想边写问题也不大),然后又随便测了测一A了
* A写到一半的时候就听说D是签到题,不过我在写A也没参与讨论,后来zp和学姐商量好也一次过了A了,然后看榜我看到了K,想到了一种基环树森林做法,跟zp说,他觉得有点问题,但我坚信正确性有保证,写了一半发现一个更好的思路,跟zp说了一下,确认没问题,写的很有信心
以上都还算顺利
------
* K写完WA了,看着简洁的代码根本不知道哪里错了,根本没有一点改的空间。在我写K的同时,zp想出了B的做法,和学姐确认后就开始写了,与此同时学姐也已经推出来F的式子了,只不过是$\Omicron(N^2)$的,一起想怎么快速计算,我一直想通过组合意义的转换,或者单纯的组合数变形,一直没有成功,学姐则在想怎么用FFT
* 此时BTLE了,大为震惊,T了第3个点,觉得很不科学,本地尝试了极端数据没有问题,zp看了半天也没有思路,我看K也看不出来,索性自己就瞎改改,忽然发现带优化的cin/cout输出endl会贼慢,本地测试如此,改完提交果然A了,耽误了太长时间
* 然后还剩不到一个小时的时候,学姐推出来了F的式子,简单看过就让学姐开始写了,我还痛苦于K为什么不过,学姐写时发现模数变了,原根也得变,找原根出了一些问题导致一直过不去,最后我又瞎搞了搞K,但还是没过
* 后半场坐大牢了
个人反思
1. 思路还行,就是实现能力太差,K思路完全没有问题,在实现的时候考虑的太简单了,忽略了一些情况,自己造的数据太弱,还是考虑不周,导致一直死卡
2. 还是要想清楚再写,K刚开始口胡的做法应该是没有问题的,但是实现太麻烦,写到一半才想到了正解(虽然也没怎么耽误时间),还是得想清楚细节,要不影响太大了,真写开了脑子就不是很清楚了
3. 或许还需要练练英语,H/I看起来不是很难但是真的读不下去题目
**wzy总结**
流水
开场看到C题有五颜六色的样例示意图,感觉可能是个签到模拟题,就先去看了。但是看完没想到完善的做法(后来发现整场都没人做C)。
很快yjh发现A是个真·模拟题,只是写起来比较麻烦,然后就开始写了。我看完C继续看D。读完题略想了一下,觉得是DP,但是怎么找到可以转移的位置还没想好。此时D已经有几支队伍过了,感觉应该不难。
K题也有人过了,zp去看了K。yjh写完A并过了以后也去看K了。我和zp讨论了一下D,忽然就想到可以从头开始找第一个 $m$ 的倍数,然后后面同理,然后就可以直接计数,不用DP了。跟zp确认了正确性以后我就开始写了,也很好写,写完就过了。
之后开始看F。题意非常简洁,也很容易写出 $n^2$ 的式子,但是不会化简。yjh和zp讨论出了K的做法,但是写完WA了。此时过了两小时左右。
zp和yjh还看了B题,我也去看了一下。然后zp想了一个比较直接的做法,复杂度也没问题。于是zp就开始写了。写完以后T了一发,可能是因为 $cin$ 太慢了之类的,yjh又优化了一下,就过了。
之后我一直在推F的式子。yjh和zp也看了F,并且在检查K到底为啥WA。我一开始推了半天没推清楚,以为它不能写成卷积的形式;但是又觉得之前推的太乱了,重写了一遍,然后就成功写出来卷积形式了。这样就能用NTT了。
检查了一遍式子没问题,就开始写。又突然发现不知道 $1000003$ 的原根是多少,不过yjh说直接枚举就行——想起来确实NTT常见的做法就是要枚举原根。写完发现答案不对,一开始按答案正确与否来枚举原根的,但是过了样例以后交上去WA了。后来发现是巧合,直接枚举原根能很快找到原根是 $2$ 。但是改了以后样例一直过不了 o(╥﹏╥)o
期间zp和yjh还在看K,但是仍然一直WA。最后仅过了三道题o(╥﹏╥)o
总结
1.推式子的时候要写清楚,否则很容易混乱,然后浪费时间。枚举原根的时候直接枚举,不要借助样例结果之类的,容易出错。
2.学算法、记模板的时候要注意细节,比如NTT,对模数是有限制的,不满足的话就只能写MTT(任意模数NTT)。F题因为不知道这一点而磕了半天囧。
3.卡题的时候可以去读读其他题,也许榜上没人做的题也有简单的。
**zp总结**
一开始看L题,发现是个走迷宫问题,感觉很难实现,于是开始看K题。
yjh看完A题,发现是个签到题,就是处理过程稍微有点麻烦。于是开始写A。
K我大致看了下,感觉是个二分图一样的问题,但是没有细想。
这时候发现很多队伍过了D题,于是和学姐开始看D,一开始感觉D是个dp,长得就很dp的样子。但是发现如果是dp并不好转移,复杂度太高。思考一段时间,学姐发现确定最小划分后,每个位置都有取或不取两种状态,转化成了一个快速幂问题。成功AC。
之后我们开B题,一开始我和yjh都没有读懂题意,后来学姐写完D来看之后才搞懂。我思考了一段时间,发现如果就按照它题意的模拟来做的话,复杂度和调和级数同阶,可做,于是我开始写B,写完之后TLE了,百思不得其解,最后才知道,getline和cin的优化会有冲突,同时使用endl会很慢,yjh试了一下,改掉之后过了。
然后看K题,思考了一会,yjh给我说了它的思路,一开始没听懂,后面他又想到了很简单的一个正解,非常合理。但是由于细节实现问题,到比赛结束都没ac,直接带上痛苦面具。
之后一段时间我们又开F题,F题题意比较简单,但是式子不好推,整了很久,学姐成功将其转化为卷积的形式。结果不晓得原根,而且NNT模板好像出锅了,比赛结束也没有ac。
# 反思
- 对细节的处理把握不够,B题,K题等
- 对数学相关方面NTT理解不够透彻,同时对可卷积的式子转化不够敏感 F题
- 计算几何永远的痛(H