「考试」noip模拟5

Posted 土 块

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「考试」noip模拟5相关的知识,希望对你有一定的参考价值。

string

这题有很多方法,这篇学长博客总结的很全,这里是一个另外的方法
其他一些方法常数大的原因主要在于操作体量大,而实际上区间重排可以用一个函数实现,这样的常数就几乎只有 26 了,实际评测也很快
仍然是线段树维护区间各字母数量,每次可以提取出所排区间内的各字母数量(相当于一个区间查询),接下来就是把他们按顺序放回线段树
因为线段树下标在此数组内并非直接对应 0 - 26 而是与各字母个数有关,所以在修改时另传参来表示线段树区间在此数组对应的字母排名
这样每次到一个节点时就需要扫一遍 26 来确定分界,然后按排序要求分到左右子树
打标记来表示区间升/降序,下传时也是一个分给两子树的过程

matrix

非常神仙的 dp QAQ
然而暂时并不知道怎么想到这种转移,所以这里先咕掉了,上方博客里也有这题题解

big

首先可以发现他做的操作就是将二进制表示循环左移一位
那么相当于他把一个操作的前缀循环左移了一位
那么就有 m+1 个实际 x 异或上的值
现在要求 \\([0,2^n)\\) 中的每个 x 与这些值异或的最小值之间取到的最大值及个数
对于 xor 运算可以考虑 01-trie,那么若一个节点有两个儿子,那么他在这一位就不会造成贡献,因为左/右必有一种能使这位为 0
而若只有一个儿子,这一位就有贡献
这样走到每一个叶子即可更新答案,因为并不关心 x 的具体值,而又有结论 \\([0,2^n)\\) 中的每个 x 同时异或某个数结果仍为 \\([0,2^n)\\) 且互不相同,所以个数可以直接累加 1

所驼门王的宝藏

tarjan 缩点后拓扑排序来 dp 即可
比较大的范围需要 vector map 这样的东西或者优化建图(如用点代表一行、一列)
11:19 的时候暴力过样例搞了 30,考后加上 vector map 就过了 QAQ 但凡考试再多 10 min 系列

以上是关于「考试」noip模拟5的主要内容,如果未能解决你的问题,请参考以下文章

「考试」noip模拟1

6.17考试总结(NOIP模拟8)

NOIP 模拟 6 考试总结

NOIP 模拟 7 考试总结

5.23考试总结(NOIP模拟2)

求NOIP C语言 普及组 初赛模拟试题 急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!