![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划与递推
Arlia
老年人记性不好
展开
-
植物大战僵尸 [费用提前计算]
问题描述 何老板喜欢玩植物大战僵尸,在游戏里有一条水平道路,道路的一端是入口,另一端是房子。僵尸会从道路的入口一端向房子一端移动。这条道路刚好穿过N块连续的空地。初始时,僵尸通过每块空地的时间是T秒。玩家可以在这N个空地中种植植物以攻击经过的僵尸,每块空地中只能种植一种植物。 共有三种不同类型的植物,分别是红草、蓝草和绿草,作用分别是攻击、减速以及下毒。每种植物只能在僵尸通过它所在...原创 2018-03-17 16:20:36 · 1167 阅读 · 0 评论 -
2018暑期练习题1 B 雾雨魔理沙
2018暑期练习题1 B 雾雨魔理沙问题描述在幻想乡,雾雨魔理沙是住在魔法之森普通的黑魔法少女。话说最近魔理沙从香霖堂拿到了升级过后的的迷你八卦炉,她迫不及待地希望试试八卦炉的威力。在一个二维平面上有许多毛玉(一种飞行生物,可以视为点),每个毛玉具有两个属性,分值value和倍率mul。八卦炉发射出的魔法炮是一条无限长的直线形区域,可以视为两条倾斜角为α的平行线之间的区域,平行线之间...原创 2018-07-09 20:17:21 · 319 阅读 · 0 评论 -
BZOJ2794 [Poi2012]Cloakroom [离线][DP]
BZOJ2794 [Poi2012]Cloakroom [离线][DP]Description有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]Input第一行一个正整数n (n<=1,000),接下来n行每行三个正整数,分别表示c[i], a[i], b[i] (c[i]<=1,000, 1<=a[i]Output输出q行,每...原创 2018-07-17 08:20:05 · 334 阅读 · 0 评论 -
BZOJ1087 [SCOI2005]互不侵犯King [递推][状态压缩]
BZOJ1087 [SCOI2005]互不侵犯King [递推][状态压缩]Description在N×NN×NN×N的棋盘里面放KKK个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。Input只有一行,包含两个数N,K ( 1 &amp;lt;=N &amp;lt;=9, 0 &amp;lt;= K &amp;lt;= N ...原创 2018-07-24 20:39:07 · 234 阅读 · 0 评论 -
BZOJ2287 [POJ Challenge]消失之物 [递推+递推]
BZOJ2287 [POJ Challenge]消失之物 [递推+递推]Descriptionftiasch 有 N 个物品, 体积分别是 W1, W2, …, WN。 由于她的疏忽, 第 i 个物品丢失了。 “要使用剩下的 N - 1 物品装满容积为 x 的背包,有几种方法呢?” – 这是经典的问题了。她把答案记为 Count(i, x) ,想要得到所有1 <= i <=...原创 2018-07-15 23:23:18 · 205 阅读 · 0 评论 -
BZOJ1026 [SCOI2009]windy数 [数位DP]
BZOJ1026 [SCOI2009]windy数 [数位DP]Descriptionwindy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?Input包含两个整数,A B。Output一个整数题解数位DP常用的思想是前缀思想。因此求...原创 2018-07-30 20:24:07 · 212 阅读 · 0 评论 -
BZOJ4033 [HAOI2015]树上染色 [树形DP]
BZOJ4033 [HAOI2015]树上染色 [树形DP]Description有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。Input第一行两个整数N,K。接下来N-1行每行三个正整...原创 2018-07-31 22:20:48 · 242 阅读 · 0 评论 -
SRM625 缺了名字的题目 [DP]
SRM625 缺了名字的题目 [DP]题目描述N 个座位的圆桌,K 个人去坐, 任意时刻联通块数量 <=G(人和桌子座位均有序)求方案数(两个方案数不同当且仅当有一个人的座位不同)数据范围N, K, G <=2000题解设f[i][j]f[i][j]f[i][j]表示前iii个人构成了jjj个联通块的方案数。方程(刷表法):f[i+1][j+...原创 2018-08-01 08:03:07 · 352 阅读 · 1 评论 -
BZOJ1799 [AHOI2009]self 同类分布 [数位DP]
BZOJ1799 [AHOI2009]self 同类分布 [数位DP]Description给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。Input两个正整数a,bOutput[a,b]中各位数字之和能整除原数的数的个数题解这道题就是状态不太好理解,其余的部分都比较温和f[i][j][k][1]f[i][j][k][1]f[i][...原创 2018-08-01 13:33:20 · 221 阅读 · 0 评论 -
DP小结
DP小结DP本质就是状态压缩——只记录和答案有关的值。所以DP的解法大概就是: ①不断探索问题性质(数位DP体现得比较明显,如BZOJ1026 windy数,还有一道缺了题号的题) ②减少那些和答案有关的值的个数(比如要从题目中筛选信息来定出状态,列出方程)。 ——scαpe只是说说而已,DP并没有什么定式。一些方法这些方法说不定可以提供一些思...原创 2018-08-01 13:36:11 · 197 阅读 · 0 评论 -
#261 萌新拆塔 [状压DP][三进制]
#261 萌新拆塔 [状压DP][三进制]题目传送门题解这道题真的很毒瘤啊(杜老师应该是只出毒瘤题的),当时看到这道题如此长的题面就直接挂机了[微笑];而且我还真的以为这道题是“10k模拟+玄学剪枝”,所以根本没有往DP那里去想……可能这就是菜鸡的最高境界吧……如果没有模仿怪,那么这道题就应该是一个一维的二进制DP(不会存在什么时候吃宝石更优的问题),每一位表示这只怪兽是否被打...原创 2018-08-13 13:49:01 · 281 阅读 · 0 评论 -
contest 0816 crow [DP][倍增]
contest 0816 crow [DP][倍增]我做了一个半小时才发现把题读错了QAQ感谢好心的出题人下来描述了一遍题意反正在树上往上跳的操作就用倍增我当初知道自己读错题之后意识模糊,啥也不知道了(最后比赛结束前半个小时以为比赛结束了,把代码放进压缩包准备上交时才发现大家根本没有躁动,然后才知道比赛还有半个小时……)还有,如果调试代码调试地意识模糊,最好重写一遍,这样多半就...原创 2018-08-18 07:54:53 · 217 阅读 · 0 评论 -
#270 关灯 [DP]
#270 关灯 [DP]题目传送门题解倒着DP。这是道没有枚举上限的DP,所以倒着来应该是最好的。分析可得,倒数第iii个时刻,按下某一个灯最多能够影响到iii个灯。所以就可以以这个信息为关键转移。设f[i][s]f[i][s]f[i][s]表示倒数第iii个时刻,所有灯的开关状况为sss的方案是否可行。具体转移看代码。注意这里实际上并没有得到具体是哪个灯被操作了,...原创 2018-08-13 22:36:38 · 243 阅读 · 0 评论 -
contest 0820 calc [DP][记忆化搜索]
contest 0820 calc [DP][记忆化搜索]当时竟然不知道暴力怎么打,于是就只骗了5分 Q^Q50pts先把每种合法的边(端点编号差&lt;=lim的边)放到一个数组里面,然后暴搜,最后判断选出来的边构成的图是否合法(每个点的度数都是偶数) 期望得分:40~50pts100pts状压DP我们强制规定边都有方向(从编号大的指向编号小的;也可以反着来)。...原创 2018-08-21 11:00:09 · 238 阅读 · 0 评论 -
最大线段覆盖问题
最大线段覆盖问题给你一些线段和一个区间,找出一种选择方法,使得区间被覆盖的长度最大,且线段之间互不相交(或者端点处可以相交)。千万不要用贪心!这是背包DP问题,设状态f[i](如果只有一个区间),表示[1,i]的区间能被覆盖的长度的最大值,方程:f[i]=max(f[i],f[Segment[j].l−1]+Segment[j].w)(Segment[j].r&lt;=i)f[i]...原创 2018-06-17 17:58:11 · 2182 阅读 · 0 评论 -
NKOJ2915 出租 [DP]
NKOJ2915 出租 [DP]问题描述明年1月到7月何老板将去环球旅行,在这期间,他打算把他在重庆的两套完全一样的房子租出去。现在有5个人想要租何老板的房子,他们的租期和愿意出的租金如下图所示:租房者 租期(从第x月租到第y月) 愿意出的租金甲 1月到2月 10乙 4月到7月 20...原创 2018-06-17 17:56:57 · 423 阅读 · 0 评论 -
NKOJ1066 饥饿的奶牛 [DP]
NKOJ1066 饥饿的奶牛 [DP]问题描述John养了若干奶牛,每天晚上奶牛都要进食。由于条件比较简陋,并不一定所有奶牛都能吃到食物。奶牛的进食方式是这样的:John有m个食桶(1<=m<=2000),分别编号为1..m。这些食桶被按照编号排成一行。John将奶牛们分成若干组,每组奶牛总是呆在一起进食的,每组奶牛会提出要求——他们需要吃第start到第end桶中的食物。...原创 2018-06-17 17:50:51 · 653 阅读 · 0 评论 -
Sue的小球 [费用提前计算]
问题描述Sue和Sandy最近迷上了一个电脑游戏,这个游戏的故事发在美丽神秘并且充满刺激的大海上,Sue有一支轻便小巧的小船。然而,Sue的目标并不是当一个海盗,而是要收集空中漂浮的彩蛋,Sue有一个秘密武器,只要她将小船划到一个彩蛋的正下方,然后使用秘密武器便可以在瞬间收集到这个彩蛋。然而,彩蛋有一个魅力值,这个魅力值会随着彩蛋在空中降落的时间而降低,Sue要想得到更多的分数,必须尽量在魅力...原创 2018-03-17 16:22:31 · 507 阅读 · 0 评论 -
动态规划——费用提前计算
费用提前计算就是在讨论当前状态时,提前把后面状态的部分值先算了,有点类似于乘法分配律中的提公因式。这一类动态规划是为消除后效性而生的。例题植物大战僵尸Sue的小球总结1.费用提前计算类型的DP一般存在于区间问题中,设状态的时候可以往区间DP上靠2.后效性是指当前状态会影响到后面的状态,即每一个状态的权值不唯一。例如,植物大战僵尸里面,通过一块蓝草之后,通过草地的速度就会...原创 2018-03-17 16:23:50 · 1224 阅读 · 0 评论 -
阿里巴巴 [费用提前计算]
题目大意在一条直线上有n(n&lt;=10000)个点有宝藏,每个点的坐标都是整数,每个宝藏在某个时间到之后都会消失,从左往右第i个宝藏的坐标为p[i],消失的时间是t[i]。阿里巴巴可以在任何一个点出发,移动一个单位需要一个单位的时间,问最少需要多少时间拿完所有宝藏,如果不能拿完所有的输出No solution。区间DP如果设状态为f[i][j],那么显然,式子是推不走的所以加一...原创 2018-03-17 17:01:33 · 311 阅读 · 0 评论 -
多维动规
多维动规你可以把多维动规理解成多线程操作,就是一次走两条路。例题借Phantasm Dragon大佬博客一用方格取数原创 2018-03-17 19:38:05 · 294 阅读 · 0 评论 -
采药
采药题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”...原创 2018-03-24 23:11:09 · 353 阅读 · 0 评论 -
警卫安排 [树形DP]
【树形DP】问题描述一个重要的基地被分为n个连通的区域。出于某种神秘的原因,这些区域以一个区域为核心,呈一颗树形分布。 在每个区域安排警卫所需要的费用是不同的,而每个区域的警卫都可以望见其相邻的区域,只要一个区域被一个警卫望见或者是安排有警卫,这个区域就是安全的。你的任务是:在确保所有区域都是安全的情况下,找到安排警卫的最小费用。 输入格式第一行n,表示树中结点的数...原创 2018-03-21 18:04:48 · 698 阅读 · 0 评论 -
非朴素最短路
非朴素最短路次短路struct node{ int id,len,flag; bool operator<(const node &a)const{ return len>a.len; }};void dijkstra(int s){ //dis[i][0]表示从s到i的最短路径长度 //dis[i][...原创 2018-04-11 17:04:52 · 244 阅读 · 0 评论 -
NlogN最长上升子序列
NlogN最长上升子序列首先感谢newuser大佬的耐心解说其次放一篇解说非常详尽的博客概括着来说,就是开一个数组f,f[i]表示长度为i的最长上升子序列的末尾的最小数字(使得后面能够选到的更大的数字尽可能多)。而正由于f[i]表示的是最小末尾,所以f数组是单调的(至于是否严格单调就要看题目要求了)。有了单调这个性质,就可以通过二分查找(或lower_bound)来找里面的数字。具体看...原创 2018-05-18 23:14:32 · 552 阅读 · 0 评论 -
校长的烦恼 [状态压缩][DP]
校长的烦恼 [状态压缩][DP]问题描述某中学开设有s门课程,现有教师m个。今天有n个求职者来应聘新教师。 已知每个人工资和能教授的课程。 在职教师不能辞退,校长想知道,最少支付多少工资就能使得每门课都有至少两名教师能教。输入格式第一行,三个整数s,m和n 接下来m行,每行若干个整数,描述一名在职教师的情况:第一个整数,表示该教师的工资,接下来的若干整数表示该教师能教...原创 2018-05-21 17:26:31 · 403 阅读 · 0 评论 -
NKOJ4763 分裂 [状态压缩][DP]
NKOJ4763 分裂 [状态压缩][DP]问题描述背景: 和久必分,分久必和。。。 题目描述: 中国历史上上分分和和次数非常多。。通读中国历史的WJMZBMR表示毫无压力。同时经常搞OI的他把这个变成了一个数学模型。假设中国的国土总和是不变的。 每个国家都可以用他的国土面积代替, 又两种可能,一种是两个国家合并为1个,那么新国家的面积为两者之和。 一种是一个国家分裂为2个,...原创 2018-05-26 14:10:53 · 228 阅读 · 0 评论 -
多叉树转二叉树
多叉树转二叉树int x,y;scanf("%d%d",&x,&y);//x->yRson[y]=Lson[x];Lson[x]=y;原创 2018-05-16 17:52:12 · 778 阅读 · 0 评论 -
NKOJ3720 黑客攻击 [状态压缩][背包DP]
NKOJ3720 黑客攻击 [状态压缩][背包DP]问题描述假设你是一个黑客,侵入了一个有着n台计算机(编号0,1,…,n-1)的网络。一共有n种服务,每台计算机都运行着所有服务。对于每台计算机,你都可以选择一项服务,终止这台计算机和所有与它相邻计算机的该项服务(如果其中一些服务已经停止,则这些服务继续处于停止状态)。你的目标是让尽量多的服务完全瘫痪(即:没有任何计算机运行该项服务)。...原创 2018-06-03 23:44:45 · 336 阅读 · 0 评论 -
BZOJ3717 [PA2014] Pakowanie [状态压缩][DP]
BZOJ3717 [PA2014] Pakowanie [状态压缩][DP]Time Limit: 90 Sec Memory Limit: 256 MBDescription你有n个物品和m个包。物品有重量,且不可被分割;包也有各自的容量。要把所有物品装入包中,至少需要几个包?Input第一行两个整数n,m(1<=n<=24,1<=m<=10...原创 2018-06-05 12:26:57 · 365 阅读 · 0 评论 -
NKOJ 小鸟 [DP][单调队列优化]
NKOJ 小鸟 [DP][单调队列优化]问题描述有一排n棵树,第i棵树的高度是Di。 一群小鸟要从第1棵树飞到第n棵树去玩。 不同小鸟的飞跃能力不同,第i只小鸟的飞跃能力为ki,表示如果当前它位于第x号树,那么它可以飞到x+1,x+2,……,x+ki号树上去,也就是一次可以飞过ki棵树。 如果小鸟飞到一棵不矮于当前树的树,那么他的劳累值会+1,否则不会。 小鸟们希望最小化劳累值...原创 2018-06-07 13:34:12 · 541 阅读 · 0 评论 -
NKOJ 排列 [DP]
NKOJ 排列 [递推]问题描述将自然数 1 到 n 任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。 例如:对于 1..5 的一个排列:3 2 4 1 5,可得到:3 > 2 < 4 > 1 < 5,其中有两个“>”和 2 个“<” 。 现在给出自然数 n,问在自然数 1..n 的所有排列中,有多少个排列恰好有 k ...原创 2018-06-08 12:07:41 · 520 阅读 · 0 评论 -
关于LIS和一类可以用树状数组优化的DP
博主写得很详尽:关于LIS和一类可以用树状数组优化的DP原创 2018-08-25 14:31:41 · 598 阅读 · 0 评论