
=======DP=======
文章平均质量分 61
空白君有着一把空白键blanKey
即使世界如此残酷,我们仍是努力挣扎着
/*算了,退役了,不挣扎了QWQ*/
展开
-
牛客网 [编程题] 牛牛的数列 (DP)
时间限制:1秒空间限制:32768K牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。 输入描述:输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 10^5),即数列的长度;第二行n个整数a_i, 表示数列中的每个数(原创 2017-05-20 00:26:43 · 2761 阅读 · 0 评论 -
HDU 1054 Strategic Game (树形DP)
题目点我点我点我题目大意:在一棵树上的结点放置士兵,士兵可以本结点及相邻结点,问最少放置士兵数。解题思路:树形DPdp[i][0] 为以 i 为根节点,并且该点不放,所需要的最少的人数;dp[i][1] 为以 i 为根节点,并且该点放,所需要的最少的人数。那么状态转移方程为:dp[i][0]=sum(dp[son[i][j]]原创 2016-08-23 11:44:01 · 264 阅读 · 0 评论 -
CF#255 C. Almost Arithmetical Progression (DP)
题目点我点我点我C. Almost Arithmetical Progressiontime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard output原创 2016-09-01 11:49:05 · 524 阅读 · 0 评论 -
CF#191 A. Dynasty Puzzles (DP)
题目点我点我点我A. Dynasty Puzzlestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe ancient Berlanders原创 2016-09-01 11:08:09 · 738 阅读 · 0 评论 -
CF#180 C. Letter (DP)
题目点我点我点我C. Lettertime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPatrick has just f原创 2016-09-01 10:28:28 · 584 阅读 · 0 评论 -
hdu 2167 Pebbles (状态压缩DP)
题目点我点我点我题目大意:给你一个矩阵,让你取其中的数使得这些数的和尽可能地大,并且取的数周围的8个都不能取。解题思路:状态压缩DP,预处理出来哪些状态可以用的,然后枚举每种可行状态,最后max一下求得最大值即可。dp[i][j]表示前i行状态为j的和。转移方程为:dp[i][j] = max(dp[i][j],dp[i-1][k]+sum[i][j]),其中k为前原创 2016-08-10 15:38:19 · 409 阅读 · 0 评论 -
CF#571 B. Minimization (DP)
题目点我点我点我B. Minimizationtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou've got arra原创 2016-08-31 23:08:34 · 422 阅读 · 0 评论 -
hdu4514 湫湫系列故事——设计风景线 (树形DP+并查集)
题目点我点我点我题目大意:中文题不解释。解题思路:并查集判断是否有环,没环则树形dp一下。/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃ ┳┛ ┗┳ ┃ ┆┆┃ ┃ ┆┆┃ ┻原创 2016-08-21 11:46:37 · 580 阅读 · 0 评论 -
CF#369(Div2) C. Coloring Trees (DP)
C. Coloring Treestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputZS the Coder and Chris the Baboon has arr原创 2016-08-30 22:38:50 · 414 阅读 · 0 评论 -
hdu5389 Zero Escape(DP)
点击打开链接题目大意:有n个人,每个人都有个号码,有两个门a和b,现在要使得所有人都通过门(任意一个),进门条件是进入的所有人的数根等于a或者b,求方案数。解题思路:一个整数的数根公式为:(x-1)%9+1.用DP做:dp[i][j]表示前i个数选出来数根为j的方案数,状态转移方程也很容易推导,详情看代码,这里不做解释。这里我们只要考虑n个人的号码组成a有多少种就可原创 2016-08-08 23:52:53 · 281 阅读 · 0 评论 -
hdu5791 Two(DP,LCS)
题目点我点我点我题目大意:两个序列的公共子序列数目。解题思路:dp[i][j]表示A序列和B序列在Ai,Bj时公共子序列的数目。状态转移方程:dp[i][j] += (dp[i-1][j] - dp[i-1][j-1] + dp[i][j-1] + (A[i] == B[j] ? dp[i - 1][j - 1] + 1 : 0) )注意取模。/原创 2016-08-02 19:50:34 · 366 阅读 · 0 评论 -
CF#333(Div2)B. Approximating a Constant Range(RMQ)
题目点我点我点我B. Approximating a Constant Rangetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputWhen Xe原创 2016-08-16 20:31:52 · 469 阅读 · 0 评论 -
POJ2411 Mondriaan's Dream(状态压缩DP)
人生第一道状态压缩DP,我这个弱渣想了N天终于弄懂了◑﹏◐题目大意:求1*2的地板填满n*m的砖块有多少种不同的方法思路:位运算+DFS+状态压缩。 当高度和宽度都为奇数时答案为0。 对于每一个位置,我们有三种放置方法: 1. 竖直放置 2. 水平放置 3. 不放置 d为当前列号 ,初始化d, now, pre都为0;对应以上三种放置方法,now, pre的调整为: 1. d = d原创 2015-11-16 22:14:16 · 540 阅读 · 0 评论 -
hdu5773 The All-purpose Zero(LIS变形)
题目点我点我点我题目大意:可以将0替换成任意interger(包括负数),在此基础上求最长递增子序列。解题思路:无疑LIS,将所有的0全部提取出来,求出此时序列的LIS(不含0的),这是针对0在子序列的外面的情况,如0,1,2,3,0.那么如果0在子序列中间怎么办?很简单,把读入的非0的数的值减去这个数前面0的个数即可,如1,2,0,3,4。在提取出0后序列原创 2016-07-28 17:52:37 · 1115 阅读 · 0 评论 -
HDU2089 不要62 (数位DP入门)
题目点我点我点我题目大意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个。思路:数位DP,我这里用记忆化搜索做。/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃ ┳┛ ┗┳ ┃ ┆┆┃原创 2016-06-01 09:20:09 · 591 阅读 · 0 评论 -
HDU 2196 Computer (树形DP)
题目点我点我点我题目大意:在一棵树上,求每个节点到树上任意结点的最远距离。解题思路:利用性质——"树上任意某个节点到树上任意节点的最远距离的端点一定会是树上直径的两个端点之一。”,第一次dfs从根节点开始找出树的直径的其中一个端点,然后从这个端点dfs,再从另一个端点dfs,max一下的最远距离则是所求答案。/* ********************原创 2016-08-23 16:01:33 · 295 阅读 · 0 评论 -
CF#219 D. Choosing Capital for Treeland(树形DP)
题目点我点我点我题目大意:给出一棵树,但是它的边是有向边,选择一个城市作为首都,首都可以可以到达所有的点,问最少调整多少条边的方向能选出首都,输出最小的调整的边数,和对应的点。解题思路:枚举每一个点为首都的花费,取最小的那个,再与每个点的花费作比较,相等的即为要输出的点。dp[0][i] 表示以i点为首都到达子节点的花费,dp[1][原创 2016-09-01 23:25:13 · 404 阅读 · 0 评论 -
CF761 C. Dasha and Password (DP)
传送门C. Dasha and Passwordtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAfter overcoming the sta原创 2017-02-01 12:06:12 · 780 阅读 · 0 评论 -
HDU5542 The Battle of Chibi (DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5542题目大意:给出n个数让你求长度恰好为m的递增子序列的方案数。解题思路:dp[i][j]表示第i个位置取长度为j,且子序列最后一个是a[i]的方案数。因为n最多1e3个,但大小范围是1e9,所以先离散化。然后利用树状数组来找到长度为j-1的并且最后一个原创 2016-10-07 14:14:39 · 442 阅读 · 0 评论 -
HDU5456 Matches Puzzle Game (记忆化搜索)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5456题目大意:给定n(n解题思路:把a-b=c的式子转化成b+c = a,然后对其进行记忆化搜索。dp[i][carry][B][C]表示剩余i根火柴棒时,(carry)是否有进位,是否在b放置,是否在c放置。/* *******************原创 2016-10-06 19:45:39 · 450 阅读 · 0 评论 -
HDU 5903 Square Distance (DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5903题目大意:给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s,要求字典序最小的答案。解题思路:dp[i][j]表示i~n这段位置,花费j是否合法,然后接下里就是贪心一下就可以了。转移方程看代码。倒着DP是因为要求字典序最小,并且要构造出原创 2016-10-03 17:56:42 · 340 阅读 · 0 评论 -
HDU5904 LCIS (DP)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5904题目大意:给定两个序列,求最长的公共上升子序列,这个子序列公差是1.解题思路:从前往后DP,dp[i]表示以i结尾的最长上升子序列的长度。dp[val] = dp[val-1] + 1。分别对两个串进行DP。然后对于每一个最长上升子序列的结尾的值i取原创 2016-10-03 13:20:22 · 386 阅读 · 0 评论 -
Codeforces712 C. Journey (DP / 记忆化搜索)
题目连接:http://codeforces.com/contest/721/problem/C题目大意:给出一个有向无环图,每条边都有时间,求在给定时间内从1走到n最多经过多少个点,输出路径。解题思路:DP。dp[i][j]表示走到第i个点时经过了j个点的花费。因为要输出路径,用pre记录,并且反向建图(递归输出路径,所以要反向)。注意必须用vis记录原创 2016-10-01 11:11:04 · 372 阅读 · 0 评论 -
HDU5900 QSC and Master(区间DP)2016 ACM/ICPC Asia Regional Shenyang Online
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5900题目大意:给出n pair 数,每pair数key和val表示当前这pair数的键值和权值,现在可以将相邻的两个数i,i+1合并,如果满足gcd(a[i],a[i+1])>1,得到的价值是两个数的权值和,每次合并两个数之后,这两个数就会消失,然后旁边的数会补上。如:1 2 3 4,原创 2016-09-19 23:20:05 · 385 阅读 · 0 评论 -
HDU 5898 odd-even number (数位DP) 2016 ACM/ICPC Asia Regional Shenyang Online
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5898odd-even numberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 114 Accepted原创 2016-09-18 21:32:15 · 647 阅读 · 0 评论 -
CF#710 E. Generate a String (DP)
题目点我点我点我E. Generate a Stringtime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputzscode原创 2016-09-05 09:25:37 · 443 阅读 · 0 评论 -
CSU 1804 有向无环图 (DP+拓扑排序) 【湖南省第十二届大学生计算机程序设计竞赛 - B】
题目点我点我点我解题思路:dp[u]表示从u出发所能到达的所有v的count[v]*b[v]之和,不难发现每一个v都对它的前继u有dp[v]+b[v]的贡献,故按照反向拓扑排序进行dp,即从入度为0的节点开始进行dp,建图的时候也反向建图,p[i]表示结点i的入度。最后每个节点乘以a[i]即可。/* *********************************原创 2016-09-04 16:28:41 · 488 阅读 · 0 评论 -
CF#367(Div2)C. Hard problem (DP)
C. Hard problemtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputVasiliy is fond of solving different tasks.原创 2016-08-12 14:41:23 · 410 阅读 · 0 评论 -
HDU 5256 序列变换 (DP/LIS变形)
题目点我点我点我解题思路:首先是严格递增,故a[i]要减去i,然后透过几个例子就不难发现最大的非递减序列的长度len,所要求的答案就是n-len。举个栗子:3 3 4 4 5 5减去i后序列为 2 1 1 0 0 -1在新的序列求出非递减序列的长度(注意!是非递减)为2,所以答案就为6-2=4./* *******************原创 2016-09-14 18:42:23 · 463 阅读 · 0 评论 -
Codeforces Round #371 (Div. 2) E. Sonya and Problem Wihtout a Legend (DP/LIS变形)
题目点我点我点我题目大意:给一个序列,每次操作能对其进行加1或减1操作,求令序列严格递增的最小操作数。解题思路:首先新的序列对于原序列来说要花费最小,所以新序列是基于原序列进行变换的(貌似这是废话=。=,额,事实没表达出这个)。b[i]=a[i]-i,然后对b[ ] sort 一下,dp[i][j]表示处理第i个数时,第i个数是变成b[j]的最小花费原创 2016-09-14 17:02:54 · 594 阅读 · 0 评论 -
POJ 3666 Making the Grade (DP/LIS变形)
题目点我点我点我解题思路:跟CF#714 E 基本一样,就是那题是严格递增,这题是非严格递增。所以a[i]不需要减去i。传送门~/* ***********************************************┆ ┏┓ ┏┓ ┆┆┏┛┻━━━┛┻┓ ┆┆┃ ┃ ┆┆┃ ━ ┃ ┆┆┃原创 2016-09-14 17:14:48 · 397 阅读 · 0 评论 -
hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
题目点我点我点我题目大意:求L到R中有多少个数符合各位数字组成长度为K的LIS。解题思路:用LIS的nlogn的方法解,如:现在LIS是2,5,8,9。最新的是3,然后就把状态更新为2,3,8,9。又因为只有0-9这10个数字,用二进制状态压缩记录状态。dp[i][j][k]表示i位数,状态为j时的LIS为k的数量。除了注意数字的上界外,还必须注意数字位数长原创 2016-05-31 11:44:17 · 1401 阅读 · 1 评论 -
POJ1160 Post Office(经典DP)
题目点我点我点我题目大意:在V个村庄建立P个邮局,求每个村庄到邮局的最短距离总和。解题思路:经典DP问题。DP问题经常是从子问题推及到父问题,此题也如此。假设现有m个村庄V1、V2、V3……Vm,要建立n个邮局,P1、P2……Pm,先考虑建立有个邮局的情况,假设第k+1个村庄到第m个村庄只有一个邮局,那么,剩下的n-1个邮局都在V1到Vk村庄中,所以:sum[i原创 2016-04-15 15:25:52 · 655 阅读 · 0 评论 -
HDU1028 Ignatius and the Princess III(DP)
题目点我点我点我题意:找出整数n有多少种拆分方法。思路:DP。dp[i][j]表示整数i拆分成最多j个数时的方案数。状态转移分三种情况:1.i 2.i==j时,dp[i][j]=dp[i][j-1]+1,拆分成j-1个数的情况(dp[i][j-1])+全部拆成1的情况(1)。3.i > j时,dp[i][j]=dp[i-j][j]+dp[i][j-1],dp原创 2016-03-24 17:58:55 · 447 阅读 · 0 评论 -
UVa 562 Dividing coins
题目连接 题目大意:有一堆硬币,要设法平均分成价值相等的两份,输出两份相差的价值。 思路:所有硬币的总价钱的一半看成容量v,使之装的价值最高,即转化为01背包问题,最后总价钱减去背包的价值的两倍即可。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#i原创 2015-10-27 22:58:23 · 476 阅读 · 0 评论 -
poj1276 Cash Machine(多重背包)
题目点我点我点我题意:给你一个cash,然后有N种价值为D,数量为n的钱币,要求凑出最接近cash的价值。 多重背包。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;原创 2015-11-12 23:49:40 · 392 阅读 · 0 评论 -
POJ2392 Space Elevator (多重背包)
题目点我点我点我题意:有一群奶牛向上太空,然后要用一块块塔搭上去,给出K种类型的塔,每种类型单块高度为h,在a高度一下都可以搭建,有c块。思路:多重背包问题,在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包了。 注意这题只有花费,没有价值,利用dp记录能搭建的所有高度的情况,能搭原创 2015-11-13 16:46:56 · 471 阅读 · 0 评论 -
hdu1059 Dividing (多重背包)
链接点我点我点我 简单多重背包#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int dp[120100],a[7];int v,k; //v为体积void Zero原创 2015-11-12 22:12:44 · 383 阅读 · 0 评论 -
uva10635 Prince and Princess(LCS转LIS)
明面好似是用LCS做,但是开一个(250*250)^2数组明显爆了,规模太大,而且时间复杂度肯定会超时的。看了一下其他解题报告才懂,好巧妙地转化为LIS。 思路:首先将王子的序列(也就是第一个序列)看作一个相对于公主的序列(第二个数列)是一个标准衡量的序列,就是将第一个序列按照输入的顺序定义为1,2,3,……,n,只不过值的定义不同了,就如: 第一个数列为:1,7,5,4,8,3,9 我们按这原创 2015-11-07 01:05:49 · 673 阅读 · 0 评论 -
POJ3624 Charm Bracelet
01背包,水过………………………………#include <iostream>#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string.h>#include <algorithm>using namespace std;int main(){ int n,m; int i,j; i原创 2015-10-22 22:36:56 · 457 阅读 · 0 评论