随笔分类 - dp
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=7055 ##思路1 考虑dp结果,dp[i]表示以i为结尾的答案 每次新进入一个字符,计算其对答案产生的贡献 char s[maxn]; int t, cnt[30], sum[30]; ll dp[maxn];
阅读全文
摘要:https://codeforces.com/contest/1557/problem/D 线段树维护dp + dp路径记录 + 离散化 考虑最多能保留的个数,线段树维护相邻两层间转移的1的位置的最大值. 对每层考虑,新加进来一个线段,都会产生一个非负的贡献,每次转移都要询问这一层能向上转移的每个点
阅读全文
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=6998 考虑每次操作能对答案产生的影响 记每次操作为$swap(a,b)$,dp[i]表示答案,初始化位-1表示状态不可达,开始时dp[k] = 0. a不可达 b可达 dp[v] = dp[u], dp[u]
阅读全文
摘要:https://codeforces.com/contest/1168/problem/C 考虑$dp$,$dp[i][j]$表示从i开始最先到达的第j位为1的位置 如果$a[x]$能转移到$a[y]$那么必定有一位二进制位置上,\(dp[x][k]<=y\) $dp$转移:从$n$向$1$枚举$i
阅读全文