11.16
T2
先考虑前两个限制,发现都是与奇偶性相关的,考虑建二分图,在不考虑第三个限制下是一个最大独立集计数。
发现由于连边方式是每一位向相邻两位连边,那么最大独立集数一定是 \(\frac{n}{2}\),并且一定形如先选一段奇数再选一段偶数的形式。
再考虑一下第三个限制,考虑对每个配对的 \((l,r)\) 加上一条 \(l\to r\) 的边,发现只有最外层括号的限制是有用的,因为内层括号的限制一定被外层括号的限制包含,那我们考虑枚举奇数和偶数的分界点,发现每个限制实际上就是形如区间 \([l,r)\) 不能选,我们考虑把左括号设为 \(1\) 右括号设为 \(-1\) 那么能选的 \(r\) 实际上就是前缀和为 \(0\) 的地方,上线段树维护即可。
T3
考虑没有包含关系是好做的,在离散化后你暴力修改覆盖区间是均摊 \(O(1)\) 的,考虑有了区间包含后一定优先选择被包含的区间,那我们考虑维护一个待选区间的集合,每次取出最小的区间后将包含他的且不被别的区间包含的区间加入即可。
比较简单的实现方法是拿线段树优化建图建出一个 DAG。
P11281
小猜一手结论有最后的合法状态肯定是形如 \(p_{p_i}=i\) 的,先把给定的限制加上,然后若干不确定的位,数量记为 \(m\),再钦定若干位为 \(p_i=i\),然后剩下的位置两两配对算方案数就行。
P11282
考虑按 \(pos\) 的奇偶性分类讨论。
对于 \(pos=1\lor pos=n\) 的数,不难发现在 \(n>3\) 时均有解。
对于偶数位,考虑先对 \([1,pos-1]\) 和 \([pos+1,n]\) 进行操作,那么最后肯定会剩下三个数,因为我们只在意首位两个数与 \(p_{pos}\) 的大小关系,所以我们只用关心极值就行,规定大于为 \(1\) 小于为 \(0\),假如最后能有 \(11\) 或 \(00\) 的情况就是有解,否则无解。
对于奇数位,考虑同样按上面做,那么最后会剩下来五个数,我们还是只考虑和 \(p_{pos}\) 的大小关系,那么最后只有 \(0110,1001,0011,1100,0000,1111\) 六种状态是合法的,因为左右是对称的所以我们只考虑前两个数,对于这些合法的状态我们贪心的让他们尽量被取到,对于第二个数也就是紧贴 \(pos\) 的数,我们选择距离 \(pos\) 最近的 \(0/1\),因为我们要让他保留下来所以对于 \([1,pos-1]\) 的前缀要分给他一个奇数长度的后缀,我们让这个后缀尽量小的前提下,对于剩下的那个前缀去选择他的极值留下来,这样的情况下选择的极值一定是最优的,然后将极值与 \(p_{pos}\) 比大小判定即可。
标签:限制,pos,括号,区间,考虑,极值,模拟 From: https://www.cnblogs.com/NtYester/p/18550226