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!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值