GMOJ 2021.1.15模拟赛总结
第二天考的是2012NOIP提高真题Day1T3和Day2三道题,只会打T2和T3(和另外两题难度根本不是一个等级)
T1 开车旅行
很容易想得到思路一定是先预处理每个城市上小A和小B要跳到的下一个城市,然后直接模拟,分两部分看
1.预处理部分 暴力
O
(
n
2
)
O(n^2)
O(n2)直接爆炸。但是可以优化,比较容易的做法是先排序 用链表串起来然后从头到尾扫一遍,每次只用看相邻的四个(左边两个右边两个)城市,扫完当前的直接删除。因为是从头到尾扫所以只会出现当前城市以东的城市。复杂度
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
2.模拟部分 暴力
O
(
n
m
)
O(nm)
O(nm)但是比较容易想到的是使用倍增跳。复杂度
O
(
m
l
o
g
n
)
O(mlogn)
O(mlogn)
综上 总复杂度为
O
(
(
n
+
m
)
l
o
g
n
)
O((n+m)logn)
O((n+m)logn)可以通过本题。
本题难点在于预处理
T2 同余方程 exgcd板题
T3 借教室
两种做法。比较容易想到的是用线段树直接模拟,显然是
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)的,但是常数较大,比赛时我用的是这种方法被卡了。。
还有一种其实也是容易想到的,就是二分一个答案,然后用差分来判断这个mid之前的教室有没有发生矛盾。可以看出复杂度也是
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)但是常数小了不止一点。
T4 疫情控制 不会。现在还是不会。
其实比赛打的也不是非常差。。比较遗憾的是T1比赛时暴力打挂了
NOIP2012为什么部分分这么多???T1模拟70????T2暴力70????