我的dp之路
文章平均质量分 79
lov_vol
这个作者很懒,什么都没留下…
展开
-
poj3616 Milking Time 入门dp
题意:给了一个整数N,一头母牛在0~N时间里,其中m个时间段可以挤奶,且要休息R时间,问最大挤奶量。 简单dp:dp[A[i].r+R]=max(dp[A[i].r+R],dp[i]+A[i].val); #include#include#include#include#include#include#include#includeusin原创 2016-02-11 22:06:50 · 274 阅读 · 0 评论 -
hihoCoder 1300 展胜地的鲤鱼旗 (括号匹配问题 dp)
#1300 : 展胜地的鲤鱼旗时间限制:10000ms单点时限:1000ms内存限制:256MB描述岩手县北上市的「北上市立公园展胜地」,是陆奥国三大樱花名所之一。每年的四月中旬到五月初,这里都会举办盛大的祭奠。除了可以在盛开的樱花步道上乘坐观光马车徐行、还有横跨北上川上的鲤鱼旗,河畔还有当地特有的为祭奠祖先而编创的北上鬼剑舞。假设,原创 2016-05-06 21:53:45 · 822 阅读 · 0 评论 -
51nod BSG白山极客挑战赛 AVL树的种类
AVL树的种类平衡二叉树(AVL树),是指左右子树高度差至多为1的二叉树,并且该树的左右两个子树也均为AVL树。 现在问题来了,给定AVL树的节点个数n,求有多少种形态的AVL树恰好有n个节点。Input一行,包含一个整数n。 (0 Output一行表示结果,由于结果巨大,输出它对1000000007取余数的结果。Input示例10O原创 2016-05-21 10:55:43 · 1244 阅读 · 2 评论 -
vijos P1991 两人抓牌
两人抓牌描述N张纸牌被摆为一排,甲先从左端或右端取走一张纸牌,再由乙从左端或右端取走一张纸牌,再由甲从左端或右端取走一张纸牌……轮流抓下去,可以把所有纸牌抓完。根据规则,抓的点数多者为胜,若甲、乙都是极聪明的人(各自都站在自己的立场),求甲至少得到多少点数。格式输入格式第1行共输入1个正整数n(1第2行共输入n个整数(每个整数都>0且原创 2016-07-11 17:09:14 · 439 阅读 · 0 评论 -
vijos p1002 过河(离散化dp)
过河描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间原创 2016-07-02 16:17:22 · 773 阅读 · 0 评论 -
hdu 5763 The All-purpose Zero (贪心/数据结构+dp)
题意:给了一个序列,其中0可以变成任意一个整数,求最长上升子序列长度。原创 2016-07-29 17:12:07 · 421 阅读 · 0 评论 -
hdu5791 +codeforces 463D (LCS变形)
题意1:给了两个序列,长度分别是n,m,求公共子序列的个数。 题意2: 求k个1~n排列的LCS。原创 2016-08-03 10:45:13 · 504 阅读 · 0 评论 -
AIM Tech Round 3 (Div. 1) C. Centroids(树形dp)
题意:给了一棵树,判断对于每个节点,如果至多修改一条边是否可以使其成为树的重心。 思路:重心的定义题面上已经给了。对于一个节点,如果要是其成为重心,就是使其每个子树的结点数不超过n/2,因此对于节点数超过n/2的子树,可以找一个其子树(可以是最大子树)使其连到该节点,使这个节点的子树节点数不超过n/2.需要进行两次树形dp: 第一次就是从下往上dp,求每个子树的节点数和最大子树(节点数不超过n/2); 第二次原创 2016-08-27 10:54:53 · 753 阅读 · 0 评论 -
Codeforces Round #362 (Div. 2) B - Puzzles (树上概率dp)
题意:从节点1开始dfs,每次随机选个儿子继续dfs,求到达每个节点的经过节点的期望个数(包含该节点)。 思路:很显然,经过节点a一定经过父节点,必然与父节点有关,所以到达a节点的经过节点期望个数 = 到达a的父节点的经过节点的期望个数 + 从父节点(不包含父节点)到节点a的经过节点的期望个数。 而a的父节点到节点a,可能直接到达,也可能经过经过若干兄弟节点所在的子树再到达a,因此就可以根据在先到达节点a还是先经过兄弟节点b,想到到达节点a之前经过原创 2016-08-25 17:40:42 · 429 阅读 · 1 评论 -
hdu4714 Tree2cycle 使一棵树变成环最小代价
Tree2cycle 思路:其实就是把一棵树变成许多链再连成环,求最小代价。一个结点如果有两个子结点,如果有父结点,删除与其中一个儿子的连边和删除与父节点的连边效果都一样。如果有三个子节点必然删除其中一条与子节点的连边。注意加扩栈语句(用c++交)。原创 2016-04-21 15:21:39 · 821 阅读 · 0 评论 -
vijos P1493 传纸条 多线程dp
题目链接:点我!传纸条小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1),小轩坐在矩阵的右下角,坐标(m,n)。从小渊传到小轩的纸条只可以向下或者向原创 2016-05-02 21:27:54 · 316 阅读 · 0 评论 -
vijosP1143三取方格 多线程dp
题目链接:点我!三方格取数描述:设有N*N的方格图,我们将其中的某些方格填入正整数,而其他的方格中放入0。某人从图得左上角出发,可以向下走,也可以向右走,直到到达右下角。在走过的路上,他取走了方格中的数。(取走后方格中数字变为0)此人从左上角到右下角共走3次,试找出3条路径,使得取得的数总和最大。输入格式第一行:N (4接下来一个N*N的矩阵,矩阵中每个原创 2016-05-02 19:41:23 · 356 阅读 · 0 评论 -
hdu 2859 Phalanx 最大对称矩阵
题意:给了一个字符串矩阵,求以次对角线方向对称的最大对称矩阵。 思路 : 我是从右上角开始求的,每次只需求最外面一层对称个数sum,再和右上角对称矩阵大小加一取最小就行,就求出当前小矩阵的最大对称矩阵。 dp[i][j]=min(sum,dp[i-1][j+1]+1);具体代码:#include#include#include#inclu原创 2016-02-11 22:21:13 · 579 阅读 · 0 评论 -
poj 3666 Making the Grade (有序序列,离散化dp)
题目链接:点击打开链接 题意:给了一个序列A【1,2,3,....n],通过改变数字使之变成有序序列C[1,2,3,...n],求最小改变量sum|ai-ci| 。 思路:不降序和不升序类似,可以先考虑不降序。可以容易证明最优的方案一定都是有序序列里的数全是原序列中的数。 如: A : 1 5 3 8 C: 1 3 3 8原创 2016-02-12 20:07:53 · 295 阅读 · 0 评论 -
hdu 4489 The King’s Ups and Downs (组合数学 + dp )
题目链接:点击打开链接 题意:给了你n名不同身高的士兵,求有多少种方法是把他们按波浪状(高低高或低高低)排列。 既然是要按波浪状排列,而且士兵的身高有各不相同,那么我们可以枚举枚举身高最高(或最低)的士兵所在的位置,左边肯定 .... 低高低,右边肯定是低高低 .... 。 如 集合{1,2,3,4,5},当5在第4个位置是,原创 2016-02-03 22:32:35 · 338 阅读 · 0 评论 -
poj 1655 树的重心
题目链接:点击打开链接 题意:给了一个树,去掉一个结点后的子树的节点数的最大值即平衡值,求最小的平衡值,如果平衡值相同,使节点号最小。 思路:其实也就是求树的重心。树的重心是找到一个点使其所有子树中节点个数最大的子树的结点数目最小,使生成的树尽可能平衡。 其实 求树的重心,只需要随便找个点作为根dfs,求每个节点的原创 2016-03-08 10:56:44 · 312 阅读 · 0 评论 -
poj 2229&wustoj 1269划分数(简单dp)
转自:http://blog.csdn.net/coraline_m/article/details/16974119#comments wustoj 1269:划分数 题意:将整数n分成m份,求划分的种数,注意每份不为空,不考虑顺序。比如整数4的划分,1 1 2 和 1 2 1 以及2 1 1 为同一种划分。输出一个整数表示划分的转载 2016-04-06 14:08:19 · 547 阅读 · 0 评论 -
51nod循环数组最大子段和
1050 循环数组最大子段和N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为原创 2016-05-12 21:30:38 · 311 阅读 · 0 评论 -
加分二叉树 vijos P1100
加分二叉树描述设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数若某个子原创 2016-05-02 17:17:29 · 333 阅读 · 0 评论 -
51nod 1065 最小正子段和(最小正字段和)
1065 最小正子段和N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。Input第1行:整数序列的长度N(2 <= N <= 50000)第2 -原创 2016-05-13 09:15:17 · 1300 阅读 · 0 评论 -
codeforces 505C Mr. Kitayuta, the Treasure Hunter( dp 缩减规模 )
C. Mr. Kitayuta, the Treasure Hunter The Shuseki Islands are an archipelago of 30001 small islands in the Yutampo Sea. The islands are evenly spaced along a line, numbered from0 to 30原创 2016-10-05 11:50:05 · 468 阅读 · 0 评论