专栏文章
题解:CF2103F Maximize Nor
CF2103F题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miphh15v
- 此快照首次捕获于
- 2025/12/03 12:04 3 个月前
- 此快照最后确认于
- 2025/12/03 12:04 3 个月前
首先考虑只有 或 怎么做,此时答案变成判断是否存在一个包含 的区间权值为 。
注意到对于任意 有 。那么容易注意到如下结论:
- 形如 的序列权值取决于 的个数的奇偶性。
- 形如 的序列权值始终是 。
到这里实际上我们已经可以快速计算某一序列的权值了,方法如下:
- 如果序列不存在数字 ,归纳成结论 1。
- 否则找到序列中最后一个 对它使用结论 2,归纳成情况 1。
考虑计算每个区间的权值,枚举右端点,找到右端点前上一个 的出现位置,计为 。那么通过一些简单的讨论,对于每个左端点我们可以 计算该区间权值:
- ,此时区间全 。
- ,此时区间形如 ,实际上和 时权值相等。
- ,此时区间形如 ,权值等于 的权值异或 。
对于每个右端点直接找出权值为 的左端点最小的区间,做一个区间覆盖问题就能知道每个 的答案。
然后考虑一般情况。先拆位,发现每一位的权值按照上面的讨论分成三段。固定右端点,左端点从左到右做一个扫描线状物。注意到每一位的三段权值只有最多四个关键点,那么把每一位的值加起来总共只有 种不同的权值。直接找出这 个区间做区间 chkmax,总时间复杂度 。
具体细节可以看代码。
https://codeforces.com/contest/2103/submission/316770845
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...