2018.12.22【NOIP提高组】模拟B组总结

今天的比赛发现时间掌握不好。。。
第一题:想了2个小时。。。都想到数位DP去了,虽然没打(但是我疯了)
打表找规律。比赛时打了个表发现每九个的D()都是一循环(1~9)
然后想着怎么做,先打了个暴力然后在想,没想到的是:
如果x为喜欢的数的话,那么x+22680也是喜欢的数。
为什么?设x=aD(a),那么x+22680=aD(a)+22680
因为D(a)为1~9中的一个,所以D(a)为22680的倍数
那么a*D(a)+22680=(a+22680/D(a))*D(a),所以没有问题!
所以我们只需要先预处理一下1~22680的喜欢的数即可。
每次l~r手动统计答案即可。
https://blog.csdn.net/Larry1118/article/details/85211130
第二题:一眼状压DP,但发现转移方程难以想到&实现,直接弃疗
正解为dfs+记忆化,设f[i][j][k]为到了第i行,第i行的状态为j,
第i+1行的状态为k,且满足第i行以前的满足条件的最小海苔数。
https://blog.csdn.net/Larry1118/article/details/85268569
第三题:考场没想到,然后就打了个dfs+堆,惨烈爆零(T飞+WA)
经过研究发现,对于一个非叶子节点x,它的所有儿子节点都要小于等于它的最小的那个儿子节点。
然后,我们需要找出一个m——也就是每个儿子是值。因为要满足它的儿子节点相同且符合,那么我们可以设一个l[x]表示x的儿子的lcm。l[x]=lcm(son[x])*x的儿子个数。那么m=mi-mi mod (l[x]/儿子的个数)。
总之,这次的比赛时间和思路不对,应该层层递进,而不是bfs。。。
当想到了一点是要接着想怎么再利用这一点,如此,应当是可以想出来的。
https://blog.csdn.net/Larry1118/article/details/85206872

In general,effort next time!

你可能感兴趣的:(总结)