- XSY5208 odekeke
先考虑 \(c=0\) 怎么做。
直接 DP 非常困难,发现一个球放 A 还是 B 的决策与放圆洞还是方洞的决策互相独立,可以求出两种决策的方案数再乘起来。\(f_i\) 表示 A 总重量为 \(i\) 的方案数,\(g_i\) 表示方洞总重量为 \(i\) 的方案数,做 01 背包。合法的方案判一下各个限制即可。
\(c=1\) 显然是考虑删掉一个数后的背包,对于每个数算一下删掉后的答案即可。
- XSY5206 bracket
容易发现,答案与这个括号串的构成无关,我们只需考虑一个区间内是否构成合法串即可。
\([l,r]\) 合法当且仅当以下三个条件成立:
-
\(r-l+1\) 为偶数。
-
当所有
?
均填上(
时,没有多余的)
。 -
当所有
?
均填上)
时,没有多余的(
。
必要性显然,充分性证明可以先将串中所有 (
在 )
左侧的括号成对删掉,这显然不影响判断。可以构成一个形如 )?)??))?(((???
的串,若中间部分长度为奇数,则两边至少有一个括号无法匹配(因为整个串是偶数,两边匹配后也应为偶数),否则按如上的条件判断,若符合则左右两边都必定可以构造。
发现对于同一个 \(l\),合法的 \(r\) 是以 \(l\) 开始的一段连续区间,对于同一个 \(r\),合法的 \(l\) 是以 \(r\) 结束的一段连续区间,于是可以直接 dp。\(R_i\) 表示当 \(l=i\) 时满足条件 \(2\) 的最大的 \(r\),\(L_i\) 表示当 \(r=i\) 时满足条件 \(3\) 的最小的合法的 \(l\),\(f_i\) 表示考虑前 \(i\) 个字符的答案,有转移 \(f_i=\max(f_{i-1},\max\limits_{R_j\ge i,L_i\le j} f_{j-1}+a[i-(j-1)]+b)\),线段树维护 \(\max (f_{j}-aj)\) 即可。
- XSY 5218 perm
考虑每次操作本质是什么,发现对于 \((i,p_i)\),操作 \(1\) 后变为 \((i \operatorname{xor} 2^{n-1},p_i)\),操作 \(2\) 后是变为 \((rev(i),p_i)\),其中 \(rev(i)\) 表示 \(i\) 循环移位后的结果。
于是枚举循环移位多少次,之后可达的序列就是对下标异或上任意一个数后的结果。现在要最小化下标异或上一个数的逆序对数,发现第 \(i\) 位异或 \(1\) 即交换相邻的长度为 \(2^i\) 的区间,这个过程可以归并排序时求出,且下层交换不会影响上层,对每一层交换或不交换的情况取 \(\min\) 再求和即可。
标签:max,删掉,笔记,合法,偶数,异或,即可,杂题 From: https://www.cnblogs.com/Terac/p/18038178