
dp
文章平均质量分 78
Flying_Fatty
这个作者很懒,什么都没留下…
展开
-
[uva 10934] Dropping water balloons - [dp]
题意:n层楼楼房,有K个水球,每个水球都有一个相同的扛摔系数。即从某层楼高及其以下的楼层摔下不会坏,而从其以上的楼层摔下会坏。问:最少需要多少次尝试能够求得扛摔系数 更简单的抽象:现在有一个未知数X,范围在1-n内。现在需要猜至少多少次Y,返回的结果是Y<X或Y>X或Y=X,则可以求出X我们定义dp[i]为:猜测 i 次后能够得到的最大区间那么有如下几种情况:A:第...原创 2018-10-26 13:17:51 · 224 阅读 · 0 评论 -
POJ 3132 Sum of Different Primes 【01背包】
背包题还是太难太难,不是公式难,是理解公式运用公式太难把n拆分成k个不同素数的和,有多少种方法。n不超过1120,k不超过14,一看就是个打表的题首先把所有素数打表出来然后,打表dp【i】【j】:把i拆分成j个不同的素数的和的方案数是多少这个不同怎么来理解?用01背包来理解:每个素数去参与选择,只有1次选择机会(也就是说选或者不选,那么就是循环中的第一维)由于是原创 2016-10-27 20:12:41 · 284 阅读 · 0 评论 -
HDOJ 1059 POJ 1014 Dividing 【多重背包】
有ai个重量为i的物品,i=1,2,3,4,5,6问是否存在某种分配方案,把他们平均分?其实这个题可以直接用多重背包搞:但是!对于每个题要仔细分析特点举个例子,10000 10000 10000 10000 10000 10000这组数据这么大的值有意义吗?其实并没有对吧。因为太大的值,我们可以提前平均分好其实10000是等价于可以平均分的但是,是偶原创 2016-10-26 14:51:23 · 260 阅读 · 0 评论 -
POJ 1837 Balance 【01背包】
题意:有一个天平,坐标值均为【-15,15】的整数,给n个整数位置,可以悬挂砝码;给m个砝码的重量要求:m个砝码放上天平,位置在n个中的任意一个地方,使得天平保持平衡求总方案数目样例:2 4-2 33 4 5 83*8=2*(3+4+5)3*(3+5)=2*(8+4)所以方案数目为2思路:n个位置,m个砝码,是肯定需要枚举一遍怎么放的原创 2016-10-24 22:23:31 · 229 阅读 · 0 评论 -
HDOJ 1081 POJ 1050 ZOJ 1074 TO THE MAX【dp】
题意一句话:给你一个n*n的矩阵,求其中的最大子矩阵和先考虑1*n的矩阵怎么求:就是一行的数怎么求:从前往后dp对吧:对于当前第i个数,我们选,是因为加上前面的值仍然大于0,即(5,-3……)这种情况,-3是要选的,因为5-3=2>0否则的话,把前面那一部分舍弃掉,只取当前的值,因为加起来小于0对求最大值没有意义每选择一个数,就比较一次最大值就可以了那么现在来考原创 2016-11-04 09:29:03 · 350 阅读 · 0 评论 -
HDOJ 5787 K-wolf Number 数位DP
数位DP的一道所谓的水题!但是呢,必须得胆子大!题意:求区间【L,R】中有多少个满足条件的十进制数条件是:任意连续K个数值都不相同,K=2,3,4,5dp最难的是设计状态和状态转移啊!K很小,所以可以每一个有意义的数位都来一维来表示呗dp[pos][p1][p2][p3][p4]pos表示当前位,p4表示前一位。这里要考虑前导0的情况,p4=10的时候表示前一位原创 2016-09-26 23:47:15 · 427 阅读 · 0 评论 -
数位DP
每天一道a+b系列新开一个专题,数位DP数位DP,无法暴力求解,需要在数位上进行递推,一般都采用记忆化搜索的方式常见题型为求区间【l,r】的某类符合条件的值,转为【0,r】-【0,l-1】来计算一般需要用数位来预处理数学上对数比大小的原则:对于一个小于n的数,肯定是从高位到地位出现了某一位(不要以为是废话,这是数位DP的代码原理)如n=4567要原创 2016-05-09 19:03:58 · 1024 阅读 · 0 评论 -
HDOJ 5745 La Vie en rose DP+bitset
据说多校赛的时候,可以直接用O(nm)的暴力for循环跑过赛后补题就TLE了找网上找到了一种很好的方法处理这种答案为0或者1的匹配问题考虑dp【i】【j】但是如果有交换的话,这种定义是不够的所以再加一维变成dp【i】【j】【k】然后转移用bitset转移+dp状态压缩一维具体思路和细节见:HDOJ5745 DP+bitset原创 2016-09-08 14:56:20 · 465 阅读 · 0 评论 -
HDOJ 5860 Death Sequence
这个题的数据量一看就是个数学题。。。然后就找啊找啊找规律!一开始走错了方向,因为k=2然后呢,找到了一个规律:(只对k=2适合)第一轮的删掉的数:x%k=0第二轮的删掉的数:x%k^2=k第三轮的删掉的数:x%k^3=k^2然后发现……只对k=2适合还是贴个程序纪念一下错误的数学思路吧#includeusing namespace std;原创 2016-09-23 23:21:13 · 273 阅读 · 0 评论 -
lightoj 1071 DP/网络流
记忆化DP一水原创 2016-04-22 00:05:15 · 571 阅读 · 0 评论 -
HDOJ 5887 Herbs Gathering 【2016青岛网赛】DP+MAP
这个题题意很简单,一个背包容量为V,总共有n种物品,每种物品有对应的价值和容量:典型的01背包那为什么这个题的通过率这么低呢?因为题中的一句话:除了n的范围是不超过100,其余的所有数据是在【1,1e9】的意味着体积也会是1e9的,那么就没办法开这么大的数组了所以,脑洞:把map当成数组来搞map中的第一个值为体积,第二个值为价值第一维循环不变,仍然是枚举放原创 2016-09-20 11:07:42 · 329 阅读 · 0 评论 -
POJ 3666 Making the Grade【dp】
POJ 3666 (离散化)(贪心)(脑洞)DP原创 2016-11-26 08:43:28 · 376 阅读 · 0 评论 -
codeforces 713C Sonya and Problem Wihtout a Legend【dp】
因为这个题:弱下定决心要好好做dp!因为代码跟poj 3666太像了!数学脑洞思维是真的需要啊POJ 3666:求不升的DP这个题是求升序的DP,那么有什么变化呢不升的条件是:a【i】-a【j】>=0升序的条件是:对任意的i,j:a【i】-a【j】>=i-j看到什么了吗?移项有:a【i】-i>=a【j】-j所以,把a数组变形一下,跟POJ3666就是一个题!原创 2016-11-26 11:33:09 · 391 阅读 · 0 评论 -
HAUTOJ 1264 某科学家的打麻将 dp
题目链接首先,根据数字,大写字母,小写字母的情况,我们可以先按照6种情况来分类讨论。那么,这个题跟51nod 1241看起来很像了:要求最少的整理次数,即求有多少个可以连续的:但是这个题的数字是可以重复的所以,我们需要先对其进行整理,数字按照从小到大排序,字母也一样然后求原串和构造出来的新串的匹配数就好参考题解:writeup代码如下:原创 2017-05-01 13:19:30 · 487 阅读 · 0 评论 -
状压dp POJ1185 炮兵阵地
题目链接:http://poj.org/problem?id=1185和POJ3254一个套路:只是把“相邻”的定义改了一下POJ3254:相邻指的是上下左右各一格本题:相邻指的是上下左右各两格同样地:数据还是很小,那么我们可以枚举前一行,以及前两行的状态来实现dp转移dp[i][j][k]:前i行,第i行状态为k,第i-1行状态为j时放置炮兵数量的最大值注意这里状态为j,指的是第j个合法状态,初...原创 2018-05-02 14:05:02 · 132 阅读 · 0 评论 -
状压dp POJ 3254 Corn Fields
链接:http://poj.org/problem?id=3254题意:m*n的矩阵,每个格子中都有个0或者1,0表示不能放牧,1表示可以放牧,要求不能出现相邻的牧场都放牧了。求方案总数注意到这个题的m和n都特别小,都不超过12那么:想到状态压缩枚举每一行的所有放牧的方案,用1表示放牧,用0表示不放牧,每一个数的二进制展开均为0和1的形式那么:所有的状态总数也是很小的:2^12 = 4096种题目...原创 2018-05-02 13:53:34 · 139 阅读 · 0 评论 -
SGU448 Controlled Tournament 状压dp
题意:N名选手淘汰赛,要求指定的选手M夺冠。给定胜负关系矩阵,Aij=1,代表选手 i 能够战胜选手 j 。要求比赛树的高度尽量小,求所有可能的方案总数分析:这个树的高度尽量小很坑很坑,要怎么理解!树高尽量小是前提,然后才是选手M夺冠意味着,当N给定时,树的高度已经限定了,因为是淘汰赛,所以当N<=2时,树高h=12<N<=4时,h=2。5<N<=8时,h=3。8&l...原创 2018-04-19 18:49:22 · 294 阅读 · 0 评论 -
POJ 2411 插头dp
这个题找到的题解很好,把轮廓线的原理解释得非常清楚https://www.cnblogs.com/iiyiyi/p/5846864.html其中,重点是这样一句话:轮廓线状压的表示不是按照纵坐标大小从左到右,而是按照从左到右,从上至下的顺序(K4..K0)来的也就是说,当我们填写图中O这个格子的时候,只有K4 - K0的状态会有影响,其他的一定都是1:否则不合法那么,这个题的状态转移有三种:A:(...原创 2018-04-13 21:57:00 · 412 阅读 · 0 评论 -
BZOJ 1087 插头dp
这里的几个判断是通过下面这个博客,搞懂了轮廓线的定义以及状态转移的:https://www.cnblogs.com/iiyiyi/p/5846864.html不过,这个图的轮廓线应该是这样的:我们当前需要做出来的决策是点(i,j),之前的1代表之前的状态已经确定好(否则是不合法的)红色线标注出来的是轮廓线,蓝色线标注的是二进制的ID号,是从上到下,从左到右,从大到小标号的所以,我们当前(i,j)格...原创 2018-04-12 16:25:40 · 243 阅读 · 0 评论 -
URAL 1519 formula 1 插头dp
假设我们当前已经填充成如图所示的情况:需要填写(i,j)这个格子了那么:我们有两个大类,六种情况~~~第一类:(i,j)格子本身是个障碍点,不可达那么,应该是如图:当左插头和上插头都不存在的时候,那么才是合法的状态,可以状态转移第二类:(i,j)可达第一种情况:左插头和上插头都存在,且ID号不同:说明需要合并连通分量(ID号相同合并也没有啥意义)ID号相同且到达最后一个节点:计算终态第二种情况:当...原创 2018-04-17 22:35:37 · 169 阅读 · 0 评论 -
2018 0CTF mayagame 插头dp
writeup是说:插头dp模板题http://westerns.tokyo/writeups/0ctf2018quals.html#maya-game代码添加注释:#include <iostream>#include <vector>#include <cassert>#include <algorithm>#include <ma...原创 2018-04-12 11:10:29 · 315 阅读 · 0 评论 -
HDOJ 1693 插头dp
百度一下:基于连通性状态压缩的动态规划问题#include <iostream>using namespace std;const int maxn = 12;__int64 dp[maxn][maxn][1<<maxn];int mp[12][12];int main(){ int T; scanf("%d",&T); for(int Case...原创 2018-04-12 11:05:43 · 156 阅读 · 0 评论 -
2017zzuli校赛_2134: 维克兹的进制转换
题目链接题意就最后的一句话看到数据范围,n最大1e7,很明显是个O(n)的打表题那我们需要找到递推关系,因为末尾只可能是0,1,2三个数字,那我们先按照末尾的情况分类设ans【i】【0】为能够组成i的,末尾数字为0的方案数,ans【i】【1】,ans【i】【2】同理当i是偶数的时候,末尾数字为1必然方案数是0,即ans【i】【1】=0末尾数字为0的方案数原创 2017-04-24 10:39:24 · 349 阅读 · 0 评论 -
2017河工大邀请赛G题_1266: 最大子段和_Dp
题目链接在最大子段和上面加了个限制条件:长度必须是奇数要求奇数长度的最大值,因为长度要么是奇数,要么是偶数,这个分类就很自然奇数的长度:要么是前一个偶数的最大值+当前这个数,要么就是当前这个数偶数的长度:只可能是前一个奇数的最大值+当前这个数那么我们定义:dpodd【i】以i这个数字结尾的,长度为奇数的最大值dpeven【i】以i这个数字结尾的,长度为偶数的原创 2017-04-23 22:40:49 · 563 阅读 · 0 评论 -
HDOJ 5900 QSC and Master 【2016沈阳网赛】区间DP
题意:有N对数值排成一列,一个是KEY值,一个是VALUE值如果相邻的KEY值不是互斥的(最大公约数不为1),那么我们就可以把它们消掉,得到的分数就是他们的VALUE值的和同时,因为这两个值消去了,那么原来不相邻的数就可以相邻了区间DP还是比较明显的一方面是因为n小,n最大为300,符合n另一方面是对数值的操作,我们必须知道相邻的数值的情况,才会知道大区间的情况原创 2016-09-19 23:21:13 · 251 阅读 · 0 评论 -
HDOJ 3664 Permutation Counting / UVALive 5092 DP
这个题呢,一开始是用DP想的,但是没有按照DP的思路走,因为题目意思描述得很简单,显然是可以打表找规律的先附上打表的程序#include#include#include#include#includeusing namespace std;int dp[10][10],n;int num[10];bool vis[10];void calc(){ //for(int原创 2016-09-04 23:52:04 · 313 阅读 · 0 评论 -
Codeforces 258B Little Elephant and Elections
题目链接:CF258B还是继续我的数位DP专题学习题意:在【1,M】中选择7个数,定义数字中含有4或者7的叫做运气数,如4447有4个,可以累计现在要求:选择第一个数的运气值要严格大于其他6个数的运气总和分析:第一思路:用DP预处理dp【pos】【x】:当前位为pos,运气值为x的数有多少个但是发现这样做,有一点不好:怎么去比较严格大于这个事呢原创 2016-05-19 19:45:41 · 465 阅读 · 0 评论 -
HDOJ4507 恨7不成妻
题目链接:HDOJ4507这个题,跟标准模板就有很多的不一样了,主要体现在数学的计算上面题意:区间【L,R】内,与7数字无关的数的平方和无关的定义是:该数不含7,不能被7整除,各个数位之和不是7的倍数分析:如果是统计符合某种性质的数的个数,那么很简单不含7,在数位枚举的时候遇到7跳过就好被7整除和数位之和是7的倍数,都是在数位枚举完了之后,记忆化原创 2016-05-17 15:44:26 · 576 阅读 · 0 评论 -
HDOJ4734 F(X)
题目链接:HDOJ4734题意:给定整数a,b:先按照题目意思求得F(a),然后求区间【0,b】内有多少个数不超过F(a)刷了这么久的数位DP,对于这种模型题感觉还是在的dp【len】【x】:数位为len,不超过j的数的总数量求F(a)写个函数进行计算就好了最终的要求是不超过F(a),所以每次用F(a)去减去数位DP枚举的数,如果最终不小于0,说明这个值是可以的原创 2016-05-17 13:57:12 · 376 阅读 · 0 评论 -
HDOJ5115
最近作死的新开一个群每天一个a+b,群主是不是得坚持下来呢,感谢群巨的鼓励和支持,一起加油区间DP:HDOJ5115区间DP特点总结:数据量小,n一般在100,200左右,因为一般需要三个循环,太大了循环不起来,会超时一般dp【1】【n】为结果dp【i】【j】的状态转移需要中间量k作为转移的中点,dp【i】【k】,dp【k】【j】为最优子结构题意:n匹狼原创 2016-05-05 19:08:01 · 302 阅读 · 0 评论 -
Beautiful numbers
Beautiful numbersCodeforces55_DHOJ1983注意两边的提交格式和long long;int64不一样,细节题意:【X,Y】区间内有多少个数,该数能够整除数位中的每一位按照数位DP模板先走起dp【pos】【num】【mod】表示:当前已经算到了第pos位,当前数为num,各个数位的乘积为mod然后发现,空间没法开起来。pos开2原创 2016-05-15 09:43:02 · 419 阅读 · 0 评论 -
URAL1057_Amount Of Degrees
题目链接:URAL1057题意:区间【X,Y】内,有多少个数可以表示成K个不同的B的幂次方之和如:K=2,B=2,3=2^0+2^1,5=2^2+2^0等这个题是论文上的题:算法合集之《浅谈数位类统计问题》其实归到数位DP不是很合适,因为数学推导推完了之后就是一个组合数的问题详细分析见论文吧,不再赘述,说说我对代码的理解#include#inclu原创 2016-05-13 20:49:09 · 395 阅读 · 0 评论 -
BZOJ1026_windy数
链接:BZOJ1026题意:【A,B】区间内,有多少个所有相邻数位数值之差不小于2的数还是来想记忆化的数位DP首先len肯定是一维变量,flag是一维,既然相邻数位数值有关系,那么上一位数值必须要记录,设为before如果就dp【len】【before】行吗?可以,但是dfs记忆化的时候,就三维变量是不行的因为要判断最高位和前导0当最高位枚举的时候,原创 2016-05-13 20:26:43 · 752 阅读 · 4 评论 -
HDOJ3709_Balanced Number
题目链接:HDOJ3709题意:给定区间【A,B】,求区间内的平衡数。定义是:选取某一个数字作为支点,各个数字到该数字的距离为力矩,使得杠杆平衡。如3218这个数,以1为支点时,3距离为2,2距离为1,左边之和为8,后边之和也为8,为平衡数数位DP思想也很简单:既然不知道支点是那个点,枚举一发。既然不知道是否平衡,那么每个都来算所以定义:dp【pos】【x】【st】:pos原创 2016-05-13 20:19:03 · 441 阅读 · 0 评论 -
HDOJ3652_B number
数位DP第三天原创 2016-05-11 15:05:59 · 357 阅读 · 0 评论 -
HDOJ3943 K-th Nya Number
题目链接:HDOJ3943题意:在(P,Q】区间内,第K大的满足条件的数是多少条件是:数位中有X个4,Y个7分析:有X个4,Y个7是很简单的数位dpdp【pos】【x】【y】:当前pos位,现在已经有了x个4,y个7注意可以有个小剪枝,即x不能超过X,y不能超过Y二分的方法与HDOJ 3271 SNIBB相同题解在这儿呢:HDOJ3271SNIB原创 2016-05-23 23:36:50 · 413 阅读 · 0 评论 -
HDOJ3555
数位DP基础模板题题目链接:HDOJ3555先来膜拜一发我雨的题解:http://blog.youkuaiyun.com/deng_siyu/article/details/37729021题意很简单:判断区间【1,n】中有多少数字含有“49”这个子串状态定义:dp【i】【0】:前len位不含49,且高位不是4(不会影响下一个数字的枚举了,因为49的第一个字符是4,第len位可原创 2016-05-09 19:24:42 · 943 阅读 · 0 评论 -
HDOJ2089
懂了简单模板之后用起来就是舒服,跟着题目的数值和条件改一改就能过题目链接:HDOJ2089题目是不要62或者4出现,HDOJ3555是需要49出现,这有什么本质区别吗?拿着代码改一改就好了同样的,细节见代码哦#include#include#include#include#include#include#include#include#include原创 2016-05-09 19:45:28 · 1197 阅读 · 0 评论 -
codeforces 401D Roman and Numbers
题目链接:CF401D题意:求将n的所有数位重新排列的所有数中,能够被m整除的数的个数当数位DP专题做的,所以会想到记忆化来保存状态搞n的所有数位重新排列怎么搞?记录有多少个数字就好,每个数字都得记录,就都得用一个新变量来保存由于不能有前导0,所以构造出来会是这样:dp【pos】【a0】【a1】【a2】【a3】【a4】【a5】【a6】【a7】【a8】【a9】代表原创 2016-05-20 13:30:06 · 414 阅读 · 0 评论 -
CodeForces 711C.Coloring Trees【DP】
看上去就是DP的一个题,由于自己太菜了,还是不会做先给个提交的地方:cf 711C这个题看到数据,很明显是dp,因为n,m,k的值都不大,我们可以建立矩阵来推理很明显答案跟dp【n】【k】有关也就是dp【i】【j】代表前i个树涂完之后,有了j个匹配的最小花费但是,这样怎么转移呢?!很明显,数组还可以再开得大一点,多加一维(又相当于多了一个分层图)dp【i原创 2016-09-16 17:20:52 · 374 阅读 · 0 评论