其他分享
首页 > 其他分享> > 2021.01.15【NOIP提高B组】模拟 总结

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

作者:互联网

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

第一题 开车旅行

考场上打了70分。
预处理出每个点下一步,然后暴力跳。
正解设 f i , j f_{i,j} fi,j​表示点 i i i跳 j j j步(一步为小A和小B总和)的位置, g i , j , 0 / 1 g_{i,j,0/1} gi,j,0/1​表示途中小A/小B的价值总和。
然后倍增跳一下即可,关键如何预处理 j = 0 j=0 j=0的情况。
从大到小排序高度,然后按原来顺序跑,每次做完之后把这个点从链表中删除,因为可以发现,最大值和次大值一定会在这个点前两个点到这个点后两个点之间,链表维护。
时间复杂度为 O ( n   l o g 2 n ) O\left(n\ {log}_2^n\right) O(n log2n​)。

第二题 同余方程

将原题转化为 a x − b y = 1 ax-by=1 ax−by=1,其中 a , b a,b a,b已知,很显然这是一道扩展欧几里得算法例题。
推倒过程( ( a , b ) \left(a,b\right) (a,b)表示 a , b a,b a,b的最大公约数):
在这里插入图片描述
如果求出来的 x x x小于 0 0 0,则加上一个 b b b。
愉快的过了。

第三题 借教室

考虑线段树维护最小值,然后卡一下常,就过了。
其实也可以用二分+差分来做,更快一点

第四题 疫情控制

二分一下答案。
考虑贪心往上跳。
就跳到第二层,然后把还可以继续跳的距离按小到大排序。
接着把没覆盖的点与这些点匹配一下。
时间复杂度 ( m + n ) l o g 2 n \left(m+n\right){log}_2^n (m+n)log2n​。

标签:right,15,NOIP,log2n,然后,链表,2021.01,left
来源: https://blog.csdn.net/linweitong2020/article/details/112710833