随笔分类 -  算法---动态规划(DP)

摘要:仙题+1. 我们发现如果能够求出来$A$树中任何一个点当根的时候的$Hash$值,那么就可以求出答案了。 然后你随便写一写$Hash$策略改成$xor$,发现$xor$的逆运算就是$xor$,好啊! 换根$dp$直接求出我们需要的,然后放到$set$去就行了。 cpp include include 阅读全文
posted @ 2019-07-07 12:58 QwQGJH 阅读(131) 评论(0) 推荐(0) 编辑
摘要:BZOJ5290 [Hnoi2018]道路 前言 这道题目我竟然没有在去年省选切? 我太菜了. Solution 对题面进行一个语文透彻解析,发现这是一个二叉树,乡村都是叶子节点,城市都有两个儿子.(依据在下) " " 那么就可以树形dp了.我们假设公路是左儿子,铁路是右儿子. $dp_{i,j,k 阅读全文
posted @ 2019-02-13 08:52 QwQGJH 阅读(154) 评论(0) 推荐(0) 编辑
摘要:CF995F Cowmpany Cowmpensation Solution ~~这道题目可以看出我的代码能力是有多渣(代码能力严重退化)~~ 我们先考虑dp,很容易写出方程: 设$f_{i,j}$表示以$i$为根的子树中$i$的值为$j$,那么转移为: $$ \begin{aligned} f_{ 阅读全文
posted @ 2019-01-29 15:32 QwQGJH 阅读(185) 评论(0) 推荐(0) 编辑
摘要:BZOJ3193 [JLOI2013]地形生成 Solution 第一问不是很简单吗? 直接计数就好了. 第二问思考无果看了看hyj神仙的代码,发现可以dp求解. 具体可以看代码(其实主要是我说不清楚...) 代码实现 cpp include include include include incl 阅读全文
posted @ 2019-01-28 20:28 QwQGJH 阅读(170) 评论(0) 推荐(0) 编辑
摘要:BZOJ1049 [HAOI2006]数字序列 dp好题? 第一问 第一问我会做!令$b_i=a_i i$,求一个最长不下降子序列. $n ans$就是最终的答案. 第二问 好难啊.不会.挖坑待补. 考虑一下对于一个i~j的可能符合情况,定然存在一个$k$在i~k之中为$a_i$,k~j之中为$a_ 阅读全文
posted @ 2019-01-24 15:16 QwQGJH 阅读(192) 评论(0) 推荐(0) 编辑
摘要:BZOJ2595 [Wc2008]游览计划 Solution 考虑这是一个最小费用连通性的问题,~~既然大家都说这是什么斯坦纳树那就是的吧...~~ 所以我们肯定可以这样设一个dp状态: $dp_{i,j,k}$表示经过点(i,j)且现在连通性为$k$的最小费用. 有两种转移方程: 1. $dp_{ 阅读全文
posted @ 2019-01-24 09:45 QwQGJH 阅读(166) 评论(0) 推荐(0) 编辑
摘要:Solution 考虑这题$n$这么小,肯定是什么状压或者搜索。 考虑状压: 设$f_i$表示现在选的数的集合为$i$的最小费用,显然我们可以根据遍历点的顺序来确定点的深度。 长度的话每一次选一个当前集合内的点向外更新,如果到达点不在集合内直接加进来判一下就好了。 这个东西用dfs比较好实现。 代码 阅读全文
posted @ 2019-01-19 09:30 QwQGJH 阅读(161) 评论(0) 推荐(0) 编辑
摘要:前言 考试被$hyj$吊着打... Solution 考虑一下如果前缀和如果在某一个位置的后面的任意一个前缀和都 include include include include include include using namespace std; define ll long long defi 阅读全文
posted @ 2019-01-18 17:01 QwQGJH 阅读(147) 评论(0) 推荐(0) 编辑
摘要:前言 其实我只是为了过掉模板而写的ddp,实际应用被吊着锤 Solution ~~并不想写详细的过程~~ 一句话过程:将子树中轻儿子的贡献挂到这个点上面来 详细版:(引用yyb) 总结一下的话,大致的过程是这样子的:首先我们考虑我们的转移方程,发现能够将其改写为矩乘的形式,那么我们首先将转移改为矩乘 阅读全文
posted @ 2019-01-13 19:52 QwQGJH 阅读(303) 评论(0) 推荐(0) 编辑