You are on page 1of 2

区间和(sum)

50%

直接求和即可。

100%

经典问题,求一下前缀和即可,注意开long long。

村庄(village)
20%

数据范围非常小,可以搜索需要建立人行天桥的数量,暴力判断是否可行。

另外20%

所有的 都等于 ,答案显然为 不同的个数,注意不是等于 。

100%

首先处理出如果想包含一个村庄,人行天桥可以建造的 坐标范围,得到 个区间。

问题就转化成了选出尽量少的点,使得 个区间内都有点。

将这 个区间按照左端点排序,如果区间内不含有点,贪心选择区间右端点即可。可以证明这是正确的。

粉刷(paint)
40%

数据范围非常小,直接搜索即可。搜索时每次枚举左右端点,涂上的颜色应该是该区间内出现的颜色中的一种。

100%

区间dp。

设 为区间 到 的最少涂色次数。以下分成三种情况讨论。

如果 ,显然 。

如果 ,即区间两端点颜色相同时,涂色时在第一次选择的区间的基础上多加一格即可,

如果 ,考虑将这个区间拆成两个区间来涂色,枚举区间的分界点,取最小值。

猫(cat)
20%
暴力枚举区间左右端点,计算异或和,判断是否能买下来,取其中的最大值。

40%

在枚举左右端点时可以动态计算异或和,如已知 ~ 的异或和为 ,则 ~ 的异或和为 异或上


。取其中的最大值即可。当然也可以计算异或的前缀和。

100%

可以先求一下异或的前缀和,打表发现它其实非常有规律。

具体来说,设 表示前缀和。

可以发现这个里面其实有很多的 。而两个 异或还是 ,显然可以将这个区间中的猫全部买下来。所以我们找出


距离左右端点最近的 的位置,分别记为 ,则 ~ 区间内的猫肯定可以买下来。 和 离左右端点之
间还有一些距离,暴力枚举判断是否可行即可。

You might also like