![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
文章平均质量分 70
bin_gege
这个作者很懒,什么都没留下…
展开
-
hdu_4539_郑厂长系列故事——排兵布阵(状压DP|最大团)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4539题意:中文,不解释题解:将每一行的状态压缩,然后进行DP,也可以用最大团做。这里我用的DP#include#include#define max(a,b) ((a)>(b)?(a):(b))int row[110];int dp[110][220][220];//dp[i][原创 2016-05-23 23:09:01 · 317 阅读 · 0 评论 -
hdu_3182_Hamburger Magi(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3182题意:有n个汉堡,做每个汉堡需要消耗一定的能量,每个汉堡对应一定的价值,且只能做一次,并且做当前汉堡需要先做出列出的汉堡,求最大的价值题解:状压DP#include#define FFC(i,a,b) for(int i=a;i<=b;++i)int T,n,all,end,no原创 2016-05-23 21:44:54 · 330 阅读 · 0 评论 -
hdu_3555_Bomb(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3555题意:和2089一样,只是数据大了点,不过道理是一样的2089题解:http://blog.csdn.net/bin_gege/article/details/51531825题解:见上#include#include#include#define F(i,a,b) for(原创 2016-05-29 16:16:58 · 205 阅读 · 0 评论 -
hdu_2546_饭卡(01背包)
题目连接:hdu_2546_饭卡题意:中文,不解释题解:先拿5元来买最贵的,最后就是一个01背包,这里也算用到贪心的思想#include#define F(i,a,b) for(int i=a;i<=b;i++)using namespace std;inline void up(int &x,int y){if(x<y)x=y;}int n,a[1001],dp[1200原创 2016-07-09 22:41:30 · 240 阅读 · 0 评论 -
hdu_5293_Tree chain problem(DFS序+树形DP+LCA)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5293被这题打蹦了,看着题解写的,很是爆炸,确实想不到,我用的DFS序+LCA+树形DP,当然也可以写树剖,不过这里DFS序更简单,因为都是对点到根的操作#include#include#include#pragma comment(linker, "/STACK:102400000,10原创 2016-06-28 21:22:04 · 385 阅读 · 0 评论 -
hdu_2844_Coins(多重背包)
题目连接:hdu_2844_Coins题意:给你n个硬币的价值和对应的数量,问你从1到m有那些数能组合出来题解:如果我们将硬币的价值看成一个物品的容量和价值,那么对应1-m,如果dp[i]==i,那么这个数就能组合出来,所以这题就变成了一个多重背包,多重背包可以分为完全和01背包,也可以直接用01背包做,分两种情况的速度要快一些,只用01背包的速度要慢一些,不过还是可以AC的#incl原创 2016-07-11 17:49:55 · 244 阅读 · 0 评论 -
hdu_2159_FATE(完全背包)
题目连接:hdu_2159_FATE题意:完全背包的题意题解:把杀敌数看成背包的容量,维护一个经验的最大值,我是多开一维来记录最大的忍耐度,当然你也可以直接开一位,并记录忍耐度,最后扫一遍#include#include#define F(i,a,b) for(int i=a;i<=b;i++)inline void up(int &x,int y){if(x<y)x=y;}原创 2016-07-11 19:54:47 · 268 阅读 · 0 评论 -
hdu_1950_Bridging signals(LIS)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1950题意:实际就是求最长递增子序列题解:有两种解法,一种是利用二分,一种是用线段树这个是这题的二分代码:#include #include#define F(i,a,b) for(int i=a;i<=b;i++)using namespace std; const in原创 2016-06-30 12:02:11 · 312 阅读 · 0 评论 -
hdu_5555_Immortality of Frog(状压DP)
题目连接:hdu_5555_Immortality of Frog题意:给你一个NxN的网格,第N行的每一列都有个青蛙,这些青蛙只会往上走,上帝会在每个膜中放一个长生不老的药,一共有N个膜,每个膜覆盖一些区间,如果这个区间恰好为N那么就是好膜,否则是坏膜,每个青蛙最多只能穿过10个坏膜,问全部青蛙吃到药,并全部到顶层的分配方案。题解:1.我们首先统计每一列有多少个坏膜,其中一列如果原创 2016-07-12 16:15:16 · 967 阅读 · 0 评论 -
hdu_3564_Another LIS(线段树+LIS)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3564题意:给你N个数的位置。数i的位置为第i个数,比如 0 0 2,表示1插在第0个位置,此时数列为{1},2插在第0个位置,此时数列为{2,1},3插在第2个位置,此时数列为{2,1,3},每插一个位置,要求输出当前最大的LIS。题解:很巧妙的求法,首先要先用线段树插空法将原数列的位置还原出原创 2016-07-01 22:28:31 · 428 阅读 · 0 评论 -
hdu_5691_Sitting in Line(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5691题意:中文,不解释题解:设dp[i][j]表示当前状态为i,以第j个数为末尾的最忧解,然后dp下去就行了#include#define F(i,a,b) for(int i=a;i<=b;i++)inline void up(int &x,int y){if(x<y)x=y;}原创 2016-07-02 10:18:43 · 239 阅读 · 0 评论 -
hdu_5418_Victor and World(状压DP+Floyd)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少,题解:m#include#define F(i,a,b) for(int i=a;i<=b;i++)inline void up(int &x,int y){if(x>y)x=y;}in原创 2016-07-02 11:34:28 · 310 阅读 · 0 评论 -
hdu_5711_Ingress(TSP+贪心)
题目连接:hdu5711这题是 HDU 女生赛最后一题,TSP+贪心,确实不好想,看了wkc巨巨的题解,然后再做的题解传送门:Ingress#include#include#include#define F(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef pair P;inline void up(int &x原创 2016-07-02 15:20:27 · 875 阅读 · 0 评论 -
hdu_5179_beautiful number(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5179题意:给你一个范围,问你漂亮的数有多少个,漂亮的数的定义为 数位高的比数位低的大,并且 数位高的数%数位低的数为0题解:数位DP,详细看代码,为了方便,我把所有的参数全部设为了状态,这样就不用判断了#include#include#define F(i,a,b) for(int i原创 2016-07-05 16:33:15 · 344 阅读 · 0 评论 -
hdu_4352_XHXJ's LIS(数位DP+状态压缩)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4352题意:这题花大篇篇幅来介绍电子科大的一个传奇学姐,最后几句话才是题意,这题意思就是给你一个LL范围内的区间,问你在这个区间内最长递增子序列长度恰为K的数有多少个题解:数位DP+状态压缩,这题首先考虑如何来求数位的LIS,很明显不可能用n*n的方法,考虑nlogn的方法,维护的是一个数组,在原创 2016-07-06 10:20:01 · 1706 阅读 · 2 评论 -
hdu_3886_Final Kichiku “Lanlanshu”(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3886题意:这题的题意有点晦涩难懂,大概意思就是给你一个区间,让你找一些满足递增递减条件的数,举个列:/-\,要匹配这个关系,把一个数字分成一列数位,满足先递增,然后相等,然后递减的关系:ie:123321,1221,123441,这些都满足/-\。题解:设dp[i][j][k]表示考虑到第i位原创 2016-07-06 15:05:36 · 335 阅读 · 0 评论 -
hdu_5110_Alexandra and COS(DP+分块思想)
题目连接:hdu_5110_Alexandra and COS题意:给你一个图,X代表宝藏,然后有一个船,它的声纳的频率为D,定船到宝藏的距离为Dis=max(abs(x1-x2),abs(y1-y2)),如果D是Dis的约数并且宝藏在船的上方开角45°,那么这个船就能探测到这个宝藏,现在给你q个询问,每一个询问有一个位置x,y和一个声纳的频率D,问这个船能探测到多少宝藏题解:因为原创 2016-07-09 14:33:46 · 669 阅读 · 0 评论 -
hdu_1074_Doing Homework(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1074题意:给你n个课程(n题解:典型的状压DP#include#define FFC(i,a,b) for(int i=a;i<=b;++i)int T,n,end,inf=1e9,cur,now,nowd,nowc,v[16];struct dt{char nm[110];int原创 2016-05-23 15:24:53 · 800 阅读 · 0 评论 -
hdu_3565_Bi-peak Number(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3565题意:给你一个区间,让你找这个区间内有两个山峰的数的最大和,什么是两个山峰,比如121121 第一个2 和第二个2就是两个峰题解:求的这个不满足dfs(y)-dfs(x)所以只有用一个上限和一个下限来限制s=0:前导0的状态;s=1:第一个山峰的上坡,且不能立马下坡;s=2:原创 2016-06-03 22:12:39 · 321 阅读 · 0 评论 -
hdu_4714_Tree2cycle(树形DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4714题意:给你N个点N-1条边,形成一个树,让你拆树,并连接成一个环,每拆一次,连接一次,消耗1,问最小消耗多少题解:仔细分析,其实就是将每条边变成线段,以最优的方案拆,能拆就拆,其实只能算贪心,#include #pragma comment(linker,"/STACK:102400原创 2016-05-19 23:17:56 · 311 阅读 · 0 评论 -
hdu_4529_郑厂长系列故事——N骑士问题(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4529题意:中文,不解释题解:状压DP,dp[i][j][k][s]表示第i行当前用了j个骑士,i-1行的压缩状态为k,i行的压缩状态为j,然后用滚动数组优化了一下#include#include#define N (1<<8)#define FFC(i,a,b) for(int i=原创 2016-05-24 22:06:18 · 364 阅读 · 0 评论 -
hdu_3001_Travelling(状压DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001题意:给你N个点,M条边,每个点最多走两次,问走完N个点最短的路程为多少。题解:注意这题有重边,因为最多走两次,所以要用3进制来压缩状态,处理一下就行#include#include#define FFC(i,a,b) for(int i=a;i<=b;i++)int n,m,原创 2016-05-25 13:48:20 · 254 阅读 · 0 评论 -
hdu_3562_B-number(记忆化搜索|数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3652题意:给你一个n,为比n小的能整除13并数字中有13的数有多少个题解:记忆化搜索:记dp[i][j][k][l]为当前为第i位i+1位的数为j,余数为k,是否含有13的数的个数,然后搜索下去就得出答案了#include#include#define F(i,a,b) for(int原创 2016-05-29 12:37:02 · 262 阅读 · 0 评论 -
hdu_2089_不要62(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2089题意:中文,不解释题解:dp[i][j]表示当前第i位的前一个数为j,然后记忆化dfs,注意的是给的是一个区间,容斥完后要处理大的那个数#include#include#define F(i,a,b) for(int i=a;i<=b;i++)int dp[10][10],n,原创 2016-05-29 13:53:45 · 240 阅读 · 0 评论 -
hdu_3709_Balanced Number(数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3709题意:给你一个区间,让你找平衡数的个数题解:设dp[i][j][k]为前i位以第j位为支撑点的力矩和为k的方案数,注意的是0,00,000这些也是平衡数,所以要减掉一个len长度#include#include#define F(i,a,b) for(LL i=a;i<=b;i++原创 2016-05-29 17:23:28 · 185 阅读 · 0 评论 -
hdu_4824_Disk Schedule(dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4824题意:中文,不解释题解:双调欧几里德旅行商问题,具体可看dp双调欧几里德旅行商,这里注意的是起点为0,0。#include#define FFC(i,a,b) for(int i=a;i<=b;i++)const int maxn=1011,inf=1e9;int dp[maxn][原创 2016-05-16 22:25:33 · 281 阅读 · 0 评论 -
hdu_2224_The shortest path(dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2224题意:双调欧几里德旅行商经典问题,找一条最短回路使得该路经过所有的点题解:dp[i][j]=dp[i-1][j]+dis(i,i-1),dp[i][i-1]=Min(dp[i][i-1],dp[i-1][j]+dis(i,j));,注意这里题目的数据给的是从左往右的,所以不需要排序#i原创 2016-05-16 23:43:39 · 290 阅读 · 0 评论 -
hdu_4507_吉哥系列故事——恨7不成妻(鬼畜数位DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4507题意:中文,不解释,注意的是求的是合法数字的平方和,即(a+b+c+……)^2题解:数位DP,要维护三个值,cnt为合法的个数,sum为这cnt个合法个数的和,sqsum为这cnt个数的平方和dp[i][j][k]为第i位前i位的数字和%7的余数为j,前i位的真实值%7为k的状态,求平方和原创 2016-05-29 23:35:19 · 418 阅读 · 0 评论 -
hdu_4734_F(x)(数位DP水)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4734题意:给你一个F(x)的定义,然后给你a,b,问你在0到b包括b有多少个数满足F(x)题解:dp[i][j]为dp到第i位的和为j的方案#include#include#define F(i,a,b) for(int i=a;i<=b;i++)int t,a,b,fa,dp[1原创 2016-05-30 22:32:42 · 221 阅读 · 0 评论 -
hdu_5707_Combine String("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5707题意:给你三个字符串 a,b,c,问你 c能否拆成a,b,a,b串的每一个字符在c中不能变题解:当时打再现赛的时候没根据题目的特殊性而在哪xjb搜,艹,设dp[i][j]表示为c的前i个字符可由a的前j个字符与b的前i-j个字符组合,dp[i][j]=0表示行不通,dp[i][j]=1,表原创 2016-05-30 23:52:42 · 865 阅读 · 0 评论 -
hdu_1513_Palindrome(LCS+滚动数组)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1513题意:给你一个字符串,问你最少插入多少个字符使其为回文字符。题解:将字符串倒着保存,然后求一下原串和该串的最长公共子序列,然后字符串长度剪LCS就是答案#include#define FFC(i,a,b) for(int i=a;i<=b;i++)int n,dp[2][5010]原创 2016-05-06 22:47:03 · 192 阅读 · 0 评论 -
hdu_1011_Starship Troopers(树形DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1011题意:有N个房间,房间的连通性为树形的,就是说你要占领子结点,必须要先占领 父结点,每个房间有第一定的价值,每个房间里面有敌人,每个士兵能消灭20个敌人,现在给你m个士兵,问你能获得的最大价值为多少。题解:dp[i][j]表示用j个士兵占领以i为根的树的最大价值,然后DFS搜树。注意:当m原创 2016-05-18 16:50:14 · 271 阅读 · 0 评论 -
hdu_Anniversary party_(树形DP入门题)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直接上司将不嫩参加,问最大的快乐值为多少题解:入门的树形DP题,dp[i][0]表示第i个人不去,dp[i][1]表示第i个人去。#include#define FFC(i,a,b) for原创 2016-05-18 18:03:36 · 377 阅读 · 0 评论 -
hdu_2955_Robberies(01背包)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2955题意:给一个概率p和n个银行,每个银行有一些钱和被抓的概率,问在满足被抓的概率在p以下,抢到的最多的钱是多少题解:很裸的01背包,不过这里要换成钱的总量当作背包的容量,概率当作价值,维护一个最小的概率#include#define F(i,a,b) for(int i=a;i<=b;原创 2016-05-31 21:24:59 · 224 阅读 · 0 评论 -
hdu_5677_ztr loves substring(回文+二维多重背包)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5677题意:给你N个串,问能否选出小于K个回文字符串使得选出的字符串的长度之和为L。题解:很容易想到求一下回文字符串的个数和长度,然后就背包处理一下,数据比较水,用了manacher和二进制背包加速,0ms过。#include#include#define min(a,b) (a原创 2016-05-08 21:22:07 · 317 阅读 · 0 评论 -
hdu_4826_Labyrinth_2014百度之星(dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4826题意:中文题,不解释题解:dp搞,第一列只能从上往下走,所以先算出第一列的dp数组,然后开两个dp数组来算剩下列的从上往下和从下往上dp的值,最后取最大就是走到该单元格的最大值#include#define max(a,b) ((a)>(b)?(a):(b))int a[101][原创 2016-05-09 23:34:43 · 336 阅读 · 0 评论 -
SGU_390_Tickets(另类数位DP)
TicketsTime Limit : 1000/500ms (Java/Other) Memory Limit : 524288/262144K (Java/Other)Total Submission(s) : 79 Accepted Submission(s) : 16Problem DescriptionConductor is quite原创 2016-07-09 19:05:48 · 605 阅读 · 0 评论