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