热烈祝贺新中国成立 周年!题目:2024.10.1 题目

博弈

点的树,每条边都有边权 。对于任意不相邻的无序点对 ,都要将 的简单路径上的所有边权 取出来组成序列 ,接着有两个人在 里面取数。要求后一个取的数要不大于前一个人取的数。现让你求出 的数量,满足取数时第一个人有必胜策略。 组数据。


首先,我们来思考一下什么时候有必胜策略,什么时候又没有必胜策略。显然,当最小的数的数量为奇数时,我们直接选择最小值就行了,因为肯定是对面选不到数。那当最小数数量为偶数时呢?

经过周密的考虑,我们发现数字数量只要有一个奇数就是有必胜策略的。为什么呢?我们可以选择最小的那个奇数次数的数,此时对面肯定会选择这个数或者选择更小的数。如果对面选择更小的数,那我们我们就赢了,因为我们会出最后一个最小的数;如果对面跟着选同样的,那么我们也能赢,因为一直这样子当该数出完了后,我们又能出到最后一个最小的数。

现在我们来考虑统计答案。发现统计含有奇数数量的路径数量不好统计,因此我们可以反向思考,用所有方案的数量减去只含有偶数数量的路径数量。

看到偶数,我们可很容易想到异或运算,因为偶数个相同的数异或起来答案为 ,这就代表着一条路径如果异或值为 ,那么这条路径上任意数的数量都为偶数。

同样地,我们统计 表示为 路径上的数的异或值,对于两个不相等的数 ,如果 ,那么 可能 是满足条件的。为什么是可能呢?例如 ,那么难道就以为着 这条路径满足条件?显然不是,因此我们需要减少异或冲突的概率。

将边权离散化一下,然后对于离散后的值 ,用 替换,其中 是一个大质数,使用无符号 位整数的自然溢出,再加上亿点点运气,就可以成功求出答案。

跳跃

有长度为 的序列 ,现有人在位置 跳跃最多 次,第一次跳跃向右,第二次跳跃向左……设从 跳到了 可以等于 ),那么分数就记上 分,分数在任何情况下都不能为负,问你跳完后最大分数是多少。 组数据。


对于这道题,我们可以很容易写出 的 dp。令 表示为花费 次跳跃到 ,最多获得多少分数。对于 ,我们枚举它从 跳过来的,那么 。对求和分使用前缀和优化,即可将时间复杂度缩至

接下来考虑优化。不难发现, 的路径可以转化成 的路径在加上 ,因此我们可以将枚举 的部分省去,时间复杂度变为 ,可以获得 分。

下面就是玄学的地方了。观察样例,我们发现这个人到后期基本上都会跳到最大字段和,然后来回刷分,前面则是攒分跳到那里。因此,我们预处理每个点左右的最大字段和,然后 只枚举到 ,统计答案的时候就在那里刷分就行了。时间复杂度

大陆

个点的树,要你分成若干块,使得每一块的点数都在 之间。每一块要指定块的头,对于任意点 ,若 的头为 ,那么需要满足 的简单路径上面所有的点都要和 在同一个块。输出方案。


不会做,文件都没有创建, 分。

排列

有长度为 的排列 ,需要进行 次操作,每次给定 循环右移 次,然后判断是否满足 满足


使用暴力。修改 ,判断是否有三元上升子序列 ,考虑优化后面的算法。设 ,可以预处理出 ,然后只枚举 是否存在可以直接判断。总时间复杂度为 ,成功获得 分。

总结

  • 排名
  • 比赛分数
  • 情况:相比与 2024.9.29 模拟赛,一般;
  • 问题:不愿意骗分(第三题)。