dp
文章平均质量分 63
_pkm_
love coding
展开
-
HDU 4283 You Are the One (区间DP,记忆化搜索)
题目链接题目的意思是:有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D。但是边上有一个小黑屋(栈),可以一定程度上调整上场程序 学习一下区间dp的问题 dp[i][j]: 表示区间[i,j]的不开心值最小。 当前只考虑这一段区间里面的人的话,也就是这j-i+1个人出栈的名次是[1,j-i+1], 那么假设第i个人是第k个出栈的话,那么[i+1,i+k-1]的原创 2016-09-20 00:47:04 · 389 阅读 · 0 评论 -
HDU 5656 CA Loves GCD (dp)
题目链接 题意:给你n个数,至少选择一个,然后选择的数的gcd和是多少,两个选择不同,当且仅当有一个数的位置是不同的 dp[i][j]:表示前i个数选择出来gcd是j的种类数,gcd要提前算好,否者TLE#include<bits/stdc++.h>using namespace std;#define LL long long#define cl(a,b) memset(a,b,size原创 2016-04-07 14:25:29 · 283 阅读 · 0 评论 -
HDU 5642 King's Order(dp)
题目链接 题意:用26个字母组合出一个长度是n的序列,且不能出现连续3个相同的字符。问一共有多少情况。 解法:dp[i][j][k]:表示组合长度是i的时候,在这i位置放入字母j,字母j连续出现的长度是k,转移,就是看i-1位置填入的#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#inc原创 2016-03-13 17:50:46 · 419 阅读 · 0 评论 -
HDU 5653 Bomber Man wants to bomb an Array.(dp)
题目链接 题意:地址 分析:设dp[i][j]:表示当前考虑到第i个炸弹,其能往右边炸到的最远距离。暴力转移#include<bits/stdc++.h>using namespace std;#define LL long long#define cl(a,b) memset(a,b,sizeof(a))const int maxn=2005;const LL inf=1LL<<3原创 2016-03-30 16:40:28 · 330 阅读 · 0 评论 -
HDU 5534 Partial Tree(完全背包)
题目链接 题意:给你n个点构成一棵树,告诉每个度的权重,现在怎么构建一棵树,使他的权重最大。 解法:n个点,度数和是2*(n-1),然后没个点的度数至少是1,先把每个点分配一度,然后剩下的n-2度分配出去,使得权重最大,这个过程可以用完全背包(恰好装满)。n个点,体积是i+1(因为之前分配了1度,i为此次分配的度数),价值是度数对应权重,背包容量是n-2,dp[i]:表示分配了i点的最大值,也可原创 2015-12-01 13:49:15 · 283 阅读 · 0 评论 -
HDU 5586Sum(最大子序列和)
题目链接 题意:给你一个A数组,然后你可以选择一个区间(可以不选择),把区间的数按照函数f(x)=(1890x+143)mod10007改变,问最后你能得到的最大值A数组和 解法:把A数组的每一个位置的数字都变一下,计算下,每个位置的改变量,最后,求一下最大子序列和。//#define CF#ifndef CF#include<cstdio>#include<algorithm>#incl原创 2015-11-29 22:32:27 · 340 阅读 · 0 评论 -
codeforces#80 D. Time to Raid Cowavans(根号分块,离线处理)
题目链接 题意:给你n个数的数组A,然后m个询问,每个询问是(a,b),你要计算出A数组,a,a+b,a+2b,a+3b…位置的数的和。 解法:离线处理,分块暴力处理,官方题解, 2014 国家集训队论文《根号算法,不只是分块》也有讲解#include<bits/stdc++.h>using namespace std;#define LL long long#define cl(原创 2015-12-16 13:53:31 · 1003 阅读 · 0 评论 -
Codeforces Round #278 (Div. 1) B. Strip(Dp+multiset维护)
题目链接 题意:给你n个数,然后把他们分成区间,要求区间尽量少,区间长度不小于L,区间的最大减去最小不小于S。 解法:官方题解: We can use dynamic programming to solve this problem. Let f[i] denote the minimal number of pieces that the first i numbers can b原创 2015-11-26 22:02:22 · 369 阅读 · 0 评论 -
HDU5568 sequence2(dp+大数)
题目链接 题意:给你n个数,找出长度是m的上升序列 解答:dp[i][j]:表示以I结尾的长度是j的个数,本题n<=100可以直接暴力转移。转移是dp[i][j]=sum(dp[k][j-1])(1<=kimport java.util.Scanner;import java.math.BigInteger;public class Main { final static int原创 2015-11-23 11:16:36 · 407 阅读 · 0 评论 -
HDU5569 matrix(dp)
题目链接 题意:从(1,1)到(n,m)每次只能往右边或者下边,费用是a1*a2+a3 * a4….., 解法:画图可以发现,用点计算边权,点坐标和是奇数,的从上一个状态转移来是要加边权,否则是不用的 dp[i][j]:表示到点(i,j)的最小花费 #include<cstdio>#include<algorithm>#include<cstring>using namespace s原创 2015-11-22 15:43:34 · 1290 阅读 · 0 评论 -
1079: [SCOI2008]着色方案(dp之记忆化搜索)
题目链接 题意:略 解答:考虑到每种颜色最多只能涂5个,设dp[a][b][c][d][e][last]:能涂一个格子的颜色有a种,能涂2个格子的颜色有b种,能涂3个格子的颜色有c种,能够涂4个格子的颜色有d种,能够涂5个格子的颜色有e种,且上一次涂的是last,的方案数。 能够想到的是,比如一种颜色x能涂3个格子,当我们使用它涂一个格子后,那么它就会变为能涂2个格子的类别中去了。这一点决定了原创 2015-11-14 10:29:25 · 565 阅读 · 0 评论 -
Codeforces Testing Round #12C - Subsequences (dp+树状数组优化)
> 题目链接 题意:在n个数中,找出长度是k的上升子序列个数,(n个数都不相同) 解答:dp[i][j]:表示以i结尾的长度是j的上升序列的个数,那么dp[i][j]=dp[1][j-1]+dp[2][j-1]+dp[3][j-1]+….+dp[i-1][j-1];由于是区间求和 ,所以我们可以使用树状数组优化。#include<bits/stdc++.h>using namespace s原创 2015-11-12 15:56:41 · 469 阅读 · 0 评论 -
bzoj4300: 绝世好题(dp)
题目链接 题意:给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len)。 解答:考虑到按位与,我们可以思考,某一位都是1的情况,使用dp[i]:表示数X的二进制i位置是1的时候,最大长度,然后暴力计算。#include<bits/stdc++.h>using namespace std;#define LL long long#defin原创 2015-11-07 16:26:23 · 830 阅读 · 0 评论 -
uva531Compromise (最长公共子序列+路径输出)
Compromise Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 531 Appoint description:Description Download as PDFIn a few months the European Currency原创 2015-07-24 17:14:59 · 642 阅读 · 0 评论 -
uva624 CD (01背包+路径的输出)
CD Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 624 Appoint description:Description Download as PDFYou have a long drive by car ahead. You have原创 2015-07-24 13:47:32 · 706 阅读 · 0 评论 -
FZU 2092 收集水晶 (记忆化搜索)
题目链接 记录下dfs的参数状态,dfs表示在t时刻,一个在x1,y1,一个在x2,y2可以收集的最大的水晶数量#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<queue>#include<iostream>using namespace std;原创 2016-04-14 18:26:53 · 354 阅读 · 0 评论 -
FZU 2093 寻找兔子 (状态压缩dp)
题目链接 对于每一个点,至多有一个没有确定的点,可以确定兔子的位置。#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<queue>#include<iostream>using namespace std;#define LL __int64#d原创 2016-04-14 18:31:14 · 335 阅读 · 0 评论 -
HDU 5748 (Bellovin LIS)
题目连接 nlogn求一下LIS 就好了#include<cstdio>#include<algorithm>#include<iostream>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define LL long long#define pb push_back#define gcd __gcd#defin原创 2016-07-24 10:26:56 · 350 阅读 · 0 评论 -
HDU 5900 QSC and Master (区间dp,记忆化搜索)
题目链接题意:类似消消乐,给出n组键值对,每次选择键的gcd不是1的相邻的2个合并,然后可以获得这2个键对应的值和,消去的部分后,剩下的可以看做是相邻的。比如3 2 2 3消去2 2 那么3 3就是相邻的区间dp了,因为最终值和每次抉择是有关的,贪心是不可以的, 容易想到的是对于一个区间[i,j],枚举每一次选择的位置k,然后计算出所有的可能再取最大值,当然直接暴力,时间是不够的,原因在于计算过原创 2016-09-20 18:54:55 · 398 阅读 · 0 评论 -
HDU 5904 LCIS(dp)
题目链接 题意:给出2个序列找出2个序列的最长的上升子序列,要求元素是连续的 使用dp[i]:表示数字i结尾的最长的连续的上升子序列长度。 dp[i] = max(dp[i], dp[i-1]+1)//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<vector>原创 2016-10-22 00:10:35 · 274 阅读 · 0 评论 -
HIHO #1055 : 刷油漆(树形dp 入门)
题目链接入门的话还是看09《浅谈几类背包问题》 = =。设dp[u][j] : 表示对于,以编号是u的节点为根的子树,选择不超过j个节点,可以获得的最大的价值。状态的转移:dp[u][j]=max( dp[u][j] , dp[v_i][j-1] ) + value[u](v_i是u的儿子,j>=1)方程是类似完全背包的,儿子节点,使用dfs遍历一遍。选择儿子节点的原创 2016-08-08 20:14:54 · 350 阅读 · 0 评论 -
HDU1520Anniversary party(入门树形DP)
题意:给出了,参加party的人的关系,但是如果一个人的直接上司出席,那么他就不会出席,每个人有自己的rating。现在想要rating最大。在网上找了半天,也没找到比较好的树形DP讲解,暂时的感觉是利用DFS搜索的时候,回溯更新。 1.dp[u][0]:表示u这个人不去,那么他的手下v可以选择去或者不去。所以 dp[u][0]+=max(dp[v][0],dp[v][1]); 2.dp[i][原创 2015-08-29 16:12:39 · 639 阅读 · 0 评论 -
#1037 : 数字三角形(基础DP)
题目链接#1037 : 数字三角形时间限制:10000ms单点时限:1000ms内存限制:256MB问题描述小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国。美国人民的生活非常有意思,经常会有形形色色、奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动。迷宫节里展览出来的迷宫都特别的有意思原创 2015-04-17 18:43:00 · 589 阅读 · 0 评论 -
#1038 : 01背包 ( 01 背包,基础DP)
#1038 : 01背包时间限制:20000ms单点时限:1000ms内存限制:256MB描述且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need(i)张奖券进行兑换,同时也只能兑换一次,为了使得辛苦得到的奖券不白白浪费,小Ho给每原创 2015-04-17 19:29:08 · 500 阅读 · 0 评论 -
#1043 : 完全背包
#1043 : 完全背包时间限制:20000ms单点时限:1000ms内存限制:256MB描述且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!等等,这段故事为何似曾相识?这就要从平行宇宙理论说起了………总而言之,在另一个宇宙中,小Ho面临的问题发生了细微的变化!小Ho现在手上有M张奖券,而奖品区有N原创 2015-04-17 20:04:37 · 554 阅读 · 0 评论 -
HIHO #1044 : 状态压缩·一(状态压缩dp)
题目链接使用dp[i][p1,p2…pm]:表示1到i位置的中,选择了i-m到i的一些p1,p2…pm位置,能获得的最大的垃圾。然后选择的位置用二进制 表示,状态转移的时候的,判断一下即可getState函数也可以用二进制表示,j&((1<#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#inclu原创 2016-08-07 18:19:25 · 500 阅读 · 5 评论 -
HIHO #1048 : 状态压缩·二(1X2铺地NXM)
题目链接#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<queue>#include<map>#include<set>#include<cstdlib>#include<vector>using name原创 2016-08-08 08:55:39 · 700 阅读 · 0 评论 -
HDU 5805 NanoApe Loves Sequence(ST 表 or 预处理)
题目链接St表bc上吃T,后来HDU上交了800ms过,然后又写了一个预处理的mxl[i]:表示i左边的差值的最大值,mxr[i]:i右边的差值的最大值 ST表#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<string>#include<cmath>#include<map>原创 2016-08-06 22:37:32 · 309 阅读 · 0 评论 -
CF #313 (Div. 2) E. Gerald and Giant Chess (dp+Lucas组合计数)
题目链接在一个n*m的网格上从(1,1)出发到(n,m)每次只能往右或者往下一不,同时还给出k个坏点,坏点是不可以走到的,问有多少的方式到大(n,m).经典的题目,记录下来学习,假设目的地是一个特殊的坏点,那么就可以设dp[i]:表示到达第i个坏点且不经过其他的坏点的方案数。再看一下这个问题,从(0,0)点到(2,4)点的走法有几个?,答案就是C(2+4,2)或者C(2+4,4)。解释一下,因为原创 2016-08-06 12:59:19 · 467 阅读 · 0 评论 -
HDU 5794 A Simple Chess (dp+Lucas组合数取模)
题目链接 这道题目和 CF #313 (Div. 2) E. Gerald and Giant Chess是姊妹题,做法基本一致,不同点事本题走法是“日”的走法,依旧是只能往右下方向。所以需要写一个函数计算(x,y)是否可达,以及有几种走法。 见图: 然后就和CF那道题一样的解法了#include<cstdio>#include<algorithm>#include<iostream原创 2016-08-06 16:01:02 · 419 阅读 · 0 评论 -
HDU5773(The All-purpose Zero LIS变形)
题目链接 序列的0可以变为任意数,问LIS 0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,对剩下的做O(nlogn)的LIS,统计结果的时候再算上0的数量。为了保证严格递增,我们可以将每个权值S[i]减去i前面0的个数,再做LIS,就能保证结果是严格递增的。#include<cstdio>#include<algorithm>#inc原创 2016-07-29 16:29:55 · 315 阅读 · 0 评论 -
HDU 5763(Another Meaning kmp+dp)
题目链接 有2个串,A,B,B有2个意思,问A串可以有几种表达的形式dp[i]:表示以i结尾的种类数,如果A串从i-strlen(B)到i位置与B匹配,那么dp[i+1]=dp[i]+dp[i-strlen(B)],否则dp[i+1]=dp[i],用kmp记录匹配的结束位置。#include<cstdio>#include<algorithm>#include<iostream>#inclu原创 2016-07-29 16:28:02 · 261 阅读 · 0 评论 -
uva348Optimal Array Multiplication Sequence (最优矩阵链乘+路径输出)
Optimal Array Multiplication Sequence Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Practice UVA 348 Appoint description:Description Download as PDFGiven two原创 2015-07-24 13:44:20 · 1113 阅读 · 0 评论 -
uva10003 Cutting Sticks 经典dP,表达式上的动态规划
You have to cut a wood stick into pieces. The most affordable company, The Analog Cutting Machinery, Inc. (ACM), charges money according to the length of the stick being cut. Their procedure of work re原创 2015-07-22 09:10:14 · 963 阅读 · 0 评论 -
N - Longest Ordered Subsequence POJ 2533 (最长上升子序列 )
N - Longest Ordered SubsequenceTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 2533DescriptionA numeric sequence of ai is ordered if a1 < a2 <原创 2015-05-02 10:48:35 · 735 阅读 · 0 评论 -
K - Jury Compromise POJ 1015 (动态规划 --难)
K - Jury CompromiseTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit Status Practice POJ 1015DescriptionIn Frobnia, a far-away country, the verdicts in court trials原创 2015-04-28 16:59:20 · 1074 阅读 · 0 评论 -
#1162 : 骨牌覆盖问题·三
#1162 : 骨牌覆盖问题·三时间限制:10000ms单点时限:1000ms内存限制:256MB描述前两周里,我们讲解了2xN,3xN骨牌覆盖的问题,并且引入了两种不同的递推方法。这一次我们再加强一次题目,对于给定的K和N,我们需要去求KxN棋盘的覆盖方案数。提示:KxN骨牌覆盖输入第1行:2个整数N。表示棋盘宽度为k,长度为N。2≤K≤7,1原创 2015-05-03 10:48:51 · 860 阅读 · 0 评论 -
P - FatMouse and Cheese HDU 1078 ( 记忆化搜索 )
P - FatMouse and CheeseTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1078DescriptionFatMouse has stored some cheese in a city. The city can b原创 2015-05-10 13:04:04 · 610 阅读 · 0 评论 -
C - Monkey and Banana HDU 1069( 动态规划+叠放长方体)
C - Monkey and BananaTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1069DescriptionA group of researchers are designing an experiment to tes原创 2015-04-17 22:02:30 · 678 阅读 · 0 评论 -
I - 最少拦截系统 HDU 1257
I - 最少拦截系统Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1257Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹原创 2015-04-24 15:31:09 · 558 阅读 · 0 评论