随笔分类 - DP
摘要:CF1187E Tree Painting 换根DP "链接" 换根DP 第一次求出$f[i]$表示染$i$的子树的价值 那么第二次很明显求的$g[i]$表示以$i$为根的话答案是多少 $f[i]=size[i]+{\sum_{s\in son[i]}f[s]}$ $g[i]=g[fa] siz[i
阅读全文
摘要:Luogu_P1850 换教室 DP+期望 "题目链接" ~~题目好长啊,也化简不了~~ 考虑DP 设$f[i][j][0/1]$为从$1$到$i$交换$j$个(不一定成功),当前换或者不换的耗费体力值的总和的期望 先用floyd把任意两点之间的距离求出 然后进行DP 分当前点选与不选进行分类 具体
阅读全文
摘要:Luogu_P2607 [ZJOI2008]骑士 P1453 城市环路 基环树+树形DP "2607" "1453" 题目大意都是一样的,只要相连就不能同时取 最大化权值 但是有环 那么就在搜到环之后记录$s$和$t$表示环的两边 两次树形DP 第一次强制不取$s$ 第二次可取$s$ 找出两个的最优
阅读全文
摘要:Luogu_P4381 [IOI2008]Island 基环树 "题目链接" 题目描述的就是一个基环树森林 每次必须要用船的就是两棵基环树之间转移 考虑每个基环树的贡献 有两种可能 第一种是不在环上的一条最长的链,也就是直径 第二种是经过环 第一种很好处理,DP求直径 第二种则在DP的时候记录$d[
阅读全文
摘要:Luogu_P1026 统计单词个数 DP+string "题目链接" 题面是个什么玩意 选了this不能选th的原因是t被占用 所以只要避开第一个字母就行 字符串可以用string string的substr(l,len)函数表示把l之后长度为len的字符拿出来 find(x)则是查询字符串x第一
阅读全文
摘要:luogu_P3953 逛公园 记忆化搜索+最短路 "题目链接" 边权有0而且可能有环,所以可能出0环 出0环的话就有无限条路径了(因为可以绕着这个环一直转悠) 所以先正着跑spfa 然后反向建边 记忆化搜索 $f[i][j]$表示到$i$点,还有比最短路增加$j$的余额的方案数。 ~~真不好理解~
阅读全文
摘要:Luogu_P1514 引水入城 记忆化搜索 "题目链接" 题目的意思很好理解 考虑记忆化搜索 搜索第一行每个点能覆盖的区间 $l[x][y]$和$r[x][y]$分别表示点$(x,y)$能覆盖的左右端点 转移自然是取$\min$和取$\max$ 最后$dfs$完了统计一下最后一排的覆盖来看第一问
阅读全文
摘要:Luogu_P4999 烦人的数学作业 数位DP "题目链接" 明显数位DP的题目 $f[i][j]$记为第$i$位,各位总和为$j$的数和。 记忆化搜索。 代码如下:
阅读全文
摘要:Luogu_P4316 绿豆蛙的归宿 期望DP "题面" 挺简单的概率期望DP 设$f[i]$为$i$到$n$的期望路径的长度 答案就是$f[1]$ $f[x]=(\dfrac{1}{d[x]}) ∑(f[y]+dis)$ $d$是度数,$y$是$x$的儿子,$dis$就是距离 这个式子比较显然 但
阅读全文
摘要:题面:https://www.luogu.org/problem/P4766 非常容易就想到以时间为区间来DP。 但是时间比较大,需要离散化。 转移方程就是: 这样转移的原因是有一些区间是没有外星人的,这些区间都是0。 所以不能直接memset所有的决策点。 就需要找一下这个区间是不是有外星人,最大
阅读全文
摘要:题面:https://www.luogu.org/problem/P2519 题面真简单。 设这个人的名次为他前面的人数加1。 那么我们可以知道n-bi-ai就是并列的人数。 设l为ai+1设r为n-bi。 那么并列人数就是r-l+1。 那么自然就是求若干的不相交的段,使他们的价值和最大。 设fi为
阅读全文
摘要:题面:http://codeforces.com/contest/311/problem/B Luogu题面:https://www.luogu.com.cn/problem/CF311B 斜率优化DP 我们设t[i]=小猫结束时间-从1到它所在的地点的距离和。 也就是从什么时候开始出发可以让猫不等
阅读全文
摘要:题面:http://poj.org/problem?id=1187 很自然想到设f[i][j][k][d]为i个小括号,j个中括号,k个大括号,深度小于等于d的解。 那么答案自然就是f[i][j][k][d] - f[i][j][k][d-1] 。 但是最关键的不是在这里,而是如何转移。 我们可以假
阅读全文
摘要:题面:https://www.luogu.org/problem/P1436 设f[k][i][j][x][y]为切了k次从(i,j)到(x,y)矩形的最大解。 那么DP方程就很好写出来了。 虽然有一点点长,但是还是很好理解。 就是把当前的分为两半。 一半切k-1刀,另外一半是这1刀。 这样就合并成
阅读全文
摘要:题面:https://www.luogu.org/problem/UVA12983 求数列有多少个长度为m的严格上升子序列。 暴力很好打,牛客网竟然过了。 f[i][j]表示到第j位匹配了长度为i的严格上升子序列。 代码如下: 果然过不了n2m的复杂度很尴尬。 那么尝试用数据结构优化。 发现,其实每
阅读全文
摘要:题面:https://www.luogu.org/problem/P4644 和上一篇题解背景基本一样,就是改成了求最小的花费。 本来应该是通过DP和数据结构优化的。 但是最小花费好像可以用最短路。 将每个时间段用自己的价值连边。 再把每个时间向前一个时间连为0的边。 这样可以保证最多可以跑N个时间
阅读全文
摘要:题目链接:https://www.luogu.org/problem/P2704 蓝书状压DP例题。 读入时把山全部改为1,平地0。 还是先考虑预处理。 把所有单行合法的点记录下来,也就是1的左右两格都是0。 设f[i][j][k],表示在i行从i-1的j转移到k的最多的炮兵数。 那么肯定j和k所代
阅读全文
摘要:题目链接:http://poj.org/problem?id=2411 把每一行当作一个二进制状态。 1表示是一个竖着的1*2的方格。 0表示其他状态。 那么显然当i-1的状态k能转移到i的j: 1.j 和 k 的按位与为0。(有1必须要0,0也可以有1) 2.j 和 k 按位或每一段0都有偶数个。
阅读全文
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3743 这道题第一想法是暴力。 但是没有细分数据点。 硬想了半天没有思路。 只好去搜题解。但是题解看着好麻烦的。 于是就综合了很多题解的思路。 选择用两次树形DP 第一次先求一些必要的值。 把第
阅读全文
摘要:题面:https://www.luogu.org/problemnew/show/P1896 大意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 状压DP 用二进制表示当前状态。 1表示有,0表
阅读全文

浙公网安备 33010602011771号