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

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

第一题:把所有质数找出来,然后两两乘一下,用前缀和即可。欧拉筛:设当前第 j j j个质数为 p j p_j pj,则当 i ≡ 0 ( m o d    p j ) i\equiv 0(\mod p_j) i0(modpj)时,就不用再筛了。原因: i p j + 1 ≡ 0 ( m o d    p j ) ip_{j+1}\equiv0(\mod p_j) ipj+10(modpj),所以这个数在用 p j p_j pj筛时就已经被筛了。因为每个数被筛一次,所以时间 O ( n ) O(n) O(n)

第二题:一个贪心:任意相邻的两个企鹅匹配是最优的。所以我们先求出最多能有多少个组匹配,假设为 x x x,如果 2 x ≥ k 2x\geq k 2xk,说明我们直接放就行了,答案为 ⌈ k 2 ⌉ \lceil\frac k 2\rceil 2k。否则我们就把剩下的继续放,就是 x + ( k − 2 x ) x+(k-2x) x+(k2x)。匹配的求法:可以贪心,从下往上,遇到没有匹配的就直接匹配;也可以动态规划,设 f i , 0 / 1 f_{i,0/1} fi,0/1分别表示当前子树的答案(这个节点选还是不选)。转移的话也是没有匹配就匹配。

实话说这道题目考察了动态规划和贪心。

第三题:状压一下,跑一遍搜索或者 S P F A SPFA SPFA。时间是一样的。

第四题:有一个贪心:从小到大遍历,我们从左到右找到一合法位置,从右到左找到一个合法位置(合法位置指的是满足是第 b + 1 b+1 b+1个空位,因为空位的都是比它大的,空位没放)。然后看一看哪个比较小即可。用数据结构优化,因为空位个数是递增的,所以二分就行了。因为要查询加二分,所以大概就是 O ( n ( log ⁡ 2 n ) 2 O(n(\log_2^n)^2 O(n(log2n)2

这一题这个贪心思路要仔细想一想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值