![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
yxr0105
这个作者很懒,什么都没留下…
展开
-
poj1947 Rebuilding Roads 树形dp 背包
poj1947 Rebuilding Roads 题目大意:求树上隔离出k个点的最少删除的边数。n,k<=150 空间限制30000k 题解: (看了网上的题解大雾了一天TAT) (但是当你一旦弄明白后发现卧槽他们说的好对啊哭晕QAQ) 首先这样想 dp[i,j] 表示以i为根节点的子树剩余j个节点删除的最多的边数 这样 相当于分组背包(当时一直不明白QAQ蠢) dp[i,j]有son[i原创 2016-01-28 15:09:20 · 422 阅读 · 0 评论 -
5.26NOI模拟赛2
hs的太牛逼了……搞成现在这德行我也好意思写blogTATT1 recompile 题目大意:(背景太高大上了……)release(x):将节点x到root染成新的颜色recenter(x):换rootquery(x):查询x的子树的到根的平均颜色数(先坑 有时间写 LCT 今天刚过模板题TATT2 一个n的全排列,要求不存在大小为1的环,若存在大小为k的环,则对a原创 2016-05-27 20:55:14 · 502 阅读 · 0 评论 -
分组背包及树上分组背包
【人生相关】好困啊QAQ 小伙伴们明天都去APIO了 当初脑残没报名= = 蛮后悔的= = 但想想2800rmb 也就还好了 美好的一天从一道树形dp开始 昨天看了下以前写的分组背包 树形dp 分组背包是说有n组物品 每个组别只能选一个 体积限制V 的最大价值w 先考虑二维://f[i][j] 表示 前i组体积为j的最大价值//j k 循环可颠倒for(int i=1;i<=N;i++)原创 2016-05-04 09:52:48 · 1133 阅读 · 0 评论 -
poj2486 Apple Tree 树上分组背包
题目大意:求遍历k个几点权值和的最大值 (n<=200) 空间限制65536K 扶额 这么一算n^3空间是可以的啊……怎么会MLE…… 好吧 改成二维的 用三维的写题解 好理解 dp[i][j][0][cnt] : i的子树走j步回到i用前cnt个分组(son)的最大权值 dp[i][j][1][cnt] : i的子树走j步不回到i用前cnt个分组(son)的最大权值 dp[i][j][0原创 2016-05-04 10:03:05 · 638 阅读 · 0 评论 -
bzoj3173 [Tjoi2013]最长上升子序列 dp Treap
bzoj3173 [Tjoi2013]最长上升子序列 题意:依此插入1-n 求每插完一次的LIS 分析:每个数是按照升序插入的,因此每新加入一个数,不会影响之前的答案,那么我们就可以求出最后的序列,这样我们可以求出以每个数为结尾的LIS,那么答案 ans[i]=max(ans[i],ans[i-1]). LIS现学的囧……理解是挺好理解的……实现囧…… d[len]:长度为len的LIS的结原创 2016-05-03 17:52:10 · 448 阅读 · 0 评论 -
bzoj3173 最长上升自序列 块状链表
题意:动态插入数,求每次插完后的最长上升自序列长度。(N<=100000) 动态插入部分 块状链表 块状链表: split:分裂 O(sqrt(n)) merge:合并 O(sqrt(n)) insert:插入 具体做法是找到对应的块O(sqrt(n)),在该块内找到对应的点O(sqrt(n))split,merge(first,now),merge(now,second) mainta原创 2016-05-10 17:01:55 · 907 阅读 · 0 评论 -
hdu2196 computer dfs 树形dp
#include#include#include#includeusing namespace std;const int N=10005;struct E {int to,nxt,w;}edge[N+N];int idx[N],tot,n;bool vis[N];int max1[N],max2[N],up[N];void addedge(int from,int to,in原创 2016-02-04 21:04:51 · 330 阅读 · 0 评论 -
题集
1、背包dp 2、树形dp 3、概率dp 4、区间dp 5、数位dp最近1 2 5吧 我就是个辣鸡>_< 弱的不要不要的>_< 6、网络流原创 2016-01-28 16:02:05 · 359 阅读 · 0 评论 -
poj2778 DNA Sequence AC自动机 dp 矩阵乘法
poj2778 DNA Sequence 题意:求仅有A G C T不含有k(k<=10)个长度为d(d<=10)串的长度为L(L<=2*10^9)的串有多少个%100000 题解: 做完感觉之前对AC自动机理解的还不够透彻。 做完就透彻了?也不一定。 首先 bzoj上有一道和这个差不多 不过是kmp而不是AC自动机 bzoj1009 题解:http://www.cnblogs.com/原创 2016-02-03 01:02:34 · 420 阅读 · 0 评论 -
poj3691 DNA repair dp AC自动机
poj3691 DNA repair 题意:求母串最少改变几个字母是母串的子串不含有匹配串。 题解:实在没有力气 并没有理解呜呜呜 贴一个我认为不错的吧 http://blog.csdn.net/wugj03/article/details/6763145#include<iostream>#include<cstdio>#include<cstring>#include<queue>原创 2016-02-01 22:20:03 · 436 阅读 · 0 评论 -
Codeforces Round #341 (Div. 2) problemE Wet Shark and Blocks 矩阵乘法 dp
Codeforces Round #341 (Div. 2) problemE Wet Shark and Blocks 题目大意:有b(b<=10^9)个相同的数组,每个数组里有n(n<=50000)个1-9的数字,在每个数组里选出一个数,b个数连在一起组成一个b位数,求modx=k(k<=100)的个数对10^9+7取模 题解:dp[i,j]表示前i个数modx=j的方案数 dp[i,j]原创 2016-02-01 11:25:45 · 418 阅读 · 0 评论 -
ural1057 Amount of Degrees 数位dp
题目大意:求给定区间[X,Y]中满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和。 题解: 数位统计类问题可以看论文 《浅谈数位类统计问题》 转化成求[0,x]满足下列条件的整数个数:这个数恰好等于K个互不相等的B的整数次幂之和。二进制和k进制情况类似,所以只考虑二进制。ans=ans[0,y]-ans[0,x-1]; 这里,我使用一棵完全二叉树来代表一个区间内的数。原创 2016-01-27 14:12:45 · 357 阅读 · 0 评论 -
bzoj1026 windy数 数位dp 记忆化搜索
bzoj1026 题目大意:求[A,B]相邻两位差>=2的个数 1 <= A <= B <= 2000000000 题解: 在网上找了找题解都是用上一种方法(预处理+递推)写的 然而自认为记忆化搜索才是数位dp的通解(勿喷= = 记忆化搜索记录三个变量int dfs(int pos,int pre,bool limit)分别记录 当前位置 前一位数 是否有限制 如果(!limit) 当原创 2016-01-27 14:23:01 · 1177 阅读 · 0 评论 -
poj2411 Mondriaan's Dream 状压dp
poj2411 Mondriaan’s Dream 题目大意: 1*2的方砖铺n*m的地面。n,m<=11 题解:dp[i,state]表示前i行铺完(不是铺满) 第i行状态为state的方案数 state为一个二进制数 1表示铺了 0表示没铺 显然 dp[i,state]=dp[i-1,state’]; state和state’兼容 什么情况state和state’兼容呢 1.第i行的原创 2016-01-27 14:53:30 · 390 阅读 · 0 评论 -
hdu2476 string painter 区间dp
(坑)#include <cstdio>#include <cstring>#include <algorithm>#define N 105#define inf 0x7fffffffusing namespace std;int dp[N][N],ans[N];char a[N],b[N];int n;int main(){ while(~scanf("%s%s", a原创 2017-12-21 15:45:43 · 233 阅读 · 0 评论