摘要:
打表发现一个排列满足要求,当且仅当这个排列以被拆成两个 LIS(其中一个可以为空)考虑状压 DP:$f[S][i][0/1]$ 表示加进去数集 $S$,第二个 LIS 的最大值为 $i$,是否顶上界.我们拆分 $LIS$ 的方式是贪心地将较大的值分给第一个,剩下的分给第二个. 这个时间复杂度大概是 阅读全文
摘要:
令 $f[i]$ 表示考虑第 $1$ ~ $i$ 位的最小代价. 由于要求最大化 $k$,所以从高位向低位贪心. 判断的话就判一下当前二进制位选 1 的代价加上 $f[i-1]$ 是否小于等于 m. 如果可以选就贪心选 1. 这道题比较容易爆精度,long long 可能会乘爆,所以判一下两个 lo 阅读全文
摘要:
首先,肯定没有不合法情况(每条边的权值都赋值为 $1$ 就一定合法) 然后对于一条边 $(x,y)$ 来说,只可能有 3 种取值. 1. 取 $a[x]$ 2. 取 $a[y]$ 3. 取 $m$ 然后转化成这一步后就可以进行树形 DP 了. 令 $f[x][0],f[x][1]$ 分别表示以 $x 阅读全文
摘要:
一个比较暴力的解法. 先对所有串建出广义后缀自动机提取出后缀树然后按照询问的右端点离线. 考虑插入第 $i$ 个串,那么会被 $i$ 及 $i$ 的祖先遍历到的点的表示范围会从 $[l,r] \rightarrow [l,r+1]$. 未被遍历到的点的表示范围出现了一个“断点”,则表示范围就是 $i 阅读全文