NOIP 模拟赛 Round5

T1:

赛时一眼秒了,然后爆单了。

没有什么思路就要想到一些套路比如把模拆成减除,然后发现有个 \(k\),自然思路就出来了,\(k\) 必然是一个数的因数。复杂度是根号的。

注意特判 \(s=0,s<0\)!!!

T2:

一眼二分贪心……显然不能优化建图

按照 a 排序也是显然的。

T3:

最唐的地方是所有人都在考虑有没有 n 的情况。

并且 40 分加几行就可以过。

思路:首先一个点最多操作一次显然,又没有根,所以我们枚举根,并且还要枚举这个根的操作点,这样以后根一定不动,剩下的操作就很方便。只需要判定即可。

很显然如果 A 中的儿子和父亲都要选他们一定要满足某种顺序关系的,必须先动儿子再动父亲。并且如果 x 不用 fa 要用一定不行。

如果没有任何限制一定可以随便操作,这个很好证明。然后注意 B 树上也有一定限制。

最后关于这些限制,我们跑拓扑找环即可。

T4:

有意思,这个 01 trick 必须记录一下。

但是并不是 yly 说的和线段树一样的……

\(O(n^4)\) 的做法非常好想。卡一卡直接过 500。

这个转化真的非常的妙啊,记 0 为 1,1 为 -1。则答案为 maxpre + 原来 1 的个数。证明也是显然,主要是通过这样把一个复杂的 dp 状物变成了前缀的维护。

然后就可以 \(O(n^3)\) 暴力了,每次枚举翻转的左右端点。但是还是差得远。

有一个限制是 k 次翻转的区间一定不交。我们考虑转化一下:对每次操作的区间 sum 取反,由于此时必然为负,所以以后一定不会再选。

这样,就变成了找全局的最大和,线段树维护即可。注意还有区间取反操作。

posted @ 2024-09-08 17:23  LCat90  阅读(4)  评论(0编辑  收藏  举报