随笔分类 -  DP

摘要:D1T1模拟 D1T2由于每个点只有一个出边,所以这张图上每个连通块有且仅有一个环,所以对每个点深搜打标记找最小环即可 D1T3搜搜搜 假设不能出顺子是不是很简单?统计单牌、对子和各种搭配,尽量少出几次。 所以可以单独DFS顺子的情况,对于每种出顺子的方案,再进行上面的方法更新答案 D2T1二分答案 阅读全文
posted @ 2016-07-22 08:19 HugeGun 阅读(1084) 评论(1) 推荐(0)
摘要:题目链接 斜率优化 阅读全文
posted @ 2016-04-03 17:20 HugeGun 阅读(213) 评论(0) 推荐(0)
摘要:调了好久。。。。 •把树视为以1为根的有向树,然后将1删除 •原树变为一个森林,并且任一棵树的根节点均为原树中1的子节点 •只需要考虑最小编号前3小的三棵树 •记f[x][y]为去掉x和y两棵树后的最小值 •记dui[u]为u节点所在的树的根节点 •记dp[u]为在dui[u]这颗树中,不在路径<d 阅读全文
posted @ 2016-04-01 17:22 HugeGun 阅读(252) 评论(0) 推荐(0)
摘要:题目链接 概率DP $dp_i$表示连打$i$个字符的期望按键数 那么枚举保存的次数,均分一下连打的个数就好 阅读全文
posted @ 2016-04-01 08:44 HugeGun 阅读(265) 评论(0) 推荐(0)
摘要:斜率优化 想骂人了,马格吉最后调了半小时 TMD造数据的人是SB吧? 我写 while(scanf("%d%d",&n,&m)!=EOF&&n) 然后就TMD无限WA...WA...WA... 尼玛 改成while(scanf("%d%d",&n,&m),n) 就过了,就过了!!! 沃日,浪费我时间 阅读全文
posted @ 2016-03-31 22:36 HugeGun 阅读(208) 评论(0) 推荐(0)
摘要:题目链接 斜率优化。。。 推式子QAQ 令:$sum_i$为$C_{1~i}$的前缀和 ,$f_i=sum_i+i$ 显然:$dp_i=min\{k\in{[1,i-1]}dp_k+[f_i-f_k-(L-1)]\}$ 最后得到: 若$k$比$j$对于$i$更优,则: $[dp[k]+(f_k+L+ 阅读全文
posted @ 2016-03-31 18:00 HugeGun 阅读(211) 评论(0) 推荐(0)
摘要:题目链接 区间DP $dp_{i,j}$为杀掉$i~j$内的狼的最小代价 枚举$i~j$中最后杀掉的狼,$dp_{i,j}=min\{ { {k\in{[i,j]}} | dp_{i,k-1}+dp_{k+1,j}+A_k+B_{i-1}+B_{j+1}} \}$ 阅读全文
posted @ 2016-03-31 09:46 HugeGun 阅读(118) 评论(0) 推荐(0)
摘要:题目链接 找树的直径,我之前一只写的两次dfs,一次找最远点,第二次从最远点找最远点 这个题要“删”边,边有负权,于是只好DP了 Max1,Max2是从X往下最远和次远距离 son1,son2记录Max1,Max2是从那个儿子来的 阅读全文
posted @ 2016-03-16 10:32 HugeGun 阅读(161) 评论(0) 推荐(0)
摘要:题目链接 bitset   阅读全文
posted @ 2016-03-14 19:25 HugeGun 阅读(261) 评论(0) 推荐(0)
摘要:题目链接 为什不判v[i]+j<=c就要WA?   阅读全文
posted @ 2016-03-13 22:22 HugeGun 阅读(162) 评论(0) 推荐(0)
摘要:题目链接 少打个else 调半天QAQ 重点在47行,比较妙 阅读全文
posted @ 2016-03-13 21:56 HugeGun 阅读(210) 评论(0) 推荐(0)
摘要:题目链接 判断能不能买到i单位的干草   阅读全文
posted @ 2016-03-13 20:39 HugeGun 阅读(150) 评论(0) 推荐(0)
摘要:01背包   阅读全文
posted @ 2016-03-13 20:39 HugeGun 阅读(137) 评论(0) 推荐(0)
摘要:题目链接 反着循环就是每个东西只能选一次   阅读全文
posted @ 2016-03-13 11:19 HugeGun 阅读(196) 评论(0) 推荐(0)
摘要:题目链接 我是DP弱者!我是DP弱者!我是DP弱者! 两个循环反过来的话求的是考虑使用顺序的方案数 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio 阅读全文
posted @ 2016-03-12 17:06 HugeGun 阅读(186) 评论(0) 推荐(0)
摘要:题目链接 区间DP…… dp[i][j][k]表示i~j段能不能变成k字符 输入写丑了,不要在意QAQ 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstd 阅读全文
posted @ 2016-03-12 16:35 HugeGun 阅读(184) 评论(0) 推荐(0)
摘要:题目链接 区间DP就是好写 dp[i][j]表示i~j折叠后的最短长度 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<s 阅读全文
posted @ 2016-03-12 16:33 HugeGun 阅读(163) 评论(0) 推荐(0)
摘要:题目链接 还是区间DP做起来舒服些 dp[i][j][k]表示i~j前有/没有'W'的最短长度 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 阅读全文
posted @ 2016-03-12 16:31 HugeGun 阅读(210) 评论(0) 推荐(0)
摘要:题目链接 我真是DP弱者想了半天。。。h1[i]记录当前在第i棵树的最大值(滚动数组),h2[i]记录高度在i时的最大值这两个数组可以交替更新 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstr 阅读全文
posted @ 2016-03-04 21:25 HugeGun 阅读(168) 评论(0) 推荐(0)
摘要:题目链接 类似于找重心的写法,往牛多的那一头走(更优),直到找不到更优的 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include< 阅读全文
posted @ 2016-03-02 20:05 HugeGun 阅读(184) 评论(0) 推荐(0)