![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 77
九野的博客
这个作者很懒,什么都没留下…
展开
-
URAL 1741 Communication Fiend dp
题目链接:点击打开链接#include #include #include typedef long long ll;const ll Inf = (ll)(1e15);const int N = 10000 + 10;const int E = 10000 + 10;struct Edge { int v, cos, f, nex; Edge() { } Edg原创 2014-09-18 16:39:06 · 945 阅读 · 0 评论 -
Codeforces 474D Flowers dp(水
题目链接:点击打开链接思路:给定T k表示T组测试数据每组case [l,r]有2种物品a b,b物品必须k个连续出现问摆成一排后物品长度在[l,r]之间的方法数 思路:dp[i] = dp[i-1]+dp[i-k];#include #include #include #include #include #include #include using原创 2014-10-07 15:19:17 · 1280 阅读 · 0 评论 -
BNU 34978 汉诺塔 求期望步数
题目链接:点击打开链接我们用dp[i]表示 随机i个盘子时,恢复原位需要的步数的期望f[i]表示i个盘子下普通的汉诺塔玩法的步数既然是随机,那么我们就认为是在上一次随机的情况下,把第n个放到任意一根柱子的底部那么若随机放到了第3个柱子,则步数就是dp[n-1]若放到了第1根柱子,则先把前面的n-1个盘子移动到第2根柱子上,花费是dp[n-1]然后再把n盘子移动到原创 2014-08-14 00:02:26 · 1728 阅读 · 0 评论 -
HDU 5074 Hatsune Miku 2014 Asia AnShan Regional Contest dp(水
简单dp#include #include #include #include using namespace std;typedef unsigned long long ull;const int N = 105;int n, m, a[N];int s[N][N], dp[2][N];void pt(int x ){ for(int i = 1; i原创 2014-10-27 09:34:54 · 1286 阅读 · 0 评论 -
HDU 4359 Easy Tree DP? 带权二叉树的构造方法 dp
题意:给定n deep1、构造一个n个节点的带权树,且最大深度为deep,每个节点最多只能有2个儿子2、每个节点的值为2^0, 2^1 ··· 2^(n-1) 任意两个节点值不能相同3、对于一个节点,若他有左右儿子,则左子树的和 问:有多少种构造方法。思路:dp#include #include #include #include using原创 2014-10-10 13:59:34 · 1322 阅读 · 0 评论 -
HDU 4341 Gold miner 分组背包变形
题意:挖金矿,人在(0,0)点n个金子 游戏时间为T下面n行(x, y) cost val且若人 和 多块金子共线时,只能先取最近的金子,依次取,就是和游戏一样的。且所有点只在1 2象限思路:我们先把所有共线的点分组对于每组的物品,我们都可以认为取这个物品的花费就是前面所有物品的花费总和,而价值就是前面所有物品的价值总和。这样就能消除每组物品的先取后取的影响原创 2014-10-10 13:42:37 · 1183 阅读 · 0 评论 -
HDU 4345 Permutation dp
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-10-10 13:45:31 · 1187 阅读 · 0 评论 -
Codeforces 478D Red-Green Towers dp
题目链接:点击打开链接题意:给定r个红色正方体,g个绿色正方体。要求搭建一个高度为n的塔。对于高度为n的塔,第一层积木个数必须为n,第二层必须为n-1,依次类推,每层比下面那层少一个。且同一层颜色必须相同。问:我们设最高能搭建的塔的高度为h,问有多少种方法能搭建出高度为h的塔。思路:从最顶层开始构造。设dp[i][j]表示前i层花了j个红色木块的方法原创 2014-10-17 21:38:10 · 2087 阅读 · 0 评论 -
Codeforces 480C Riding in a Lift dp
题目链接:点击打开链接题意:给定 n a b k构造一个长度为k的序列。使得序列中 对于任意两个相邻的数 | w[i-1] - w[i] | 且第一个数 |a - w[1] | 问:有多少种不同的序列。思路:dp对于粗暴的dp复杂度是 n^3我们可以用前缀和来优化掉一维的dp。。反正是简单粗暴的题。具体看代码吧。。#include原创 2014-10-19 22:24:29 · 1264 阅读 · 0 评论 -
HDU 3564 Another LIS splay(水
题意:给定一个空序列插入n个数(依次插入 1、2、3、4··n)下面n个数表示i插在哪个位置。每插入一个数后输出这个序列的lis然后。。。因为每次插入的数都是当前序列最大的数所以不会影响后面的数的dp值那么这个位置的dp值就是插入位置的前面最大dp值+1然后输出这个序列最大的dp值。==思路:splay。。。Q:为何这题需要用splay,不是简单原创 2014-10-23 12:02:10 · 1337 阅读 · 0 评论 -
LightOJ 1038 Race to 1 Again 期望 记忆化dp
题目链接:点击打开链接1038 - Race to 1 AgainPDF (English)StatisticsForumTime Limit: 2 second(s)Memory Limit: 32 MBRimi learned a new thing about integers, whic原创 2014-08-18 00:17:12 · 2642 阅读 · 0 评论 -
Codeforces 455A Boredom 取数字的dp
题目链接:点击打开链接给定一个n长的序列删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失,即无法获得这2个数的分数问最高得分。先统计每个数出现的次数,然后dp一下,对于每个数只有取或不取2种状态。#include #include #include #include #include #include #include #includ原创 2014-08-09 12:34:44 · 1666 阅读 · 0 评论 -
HDU 4975 A simple Gaussian elimination problem. 网络流+矩阵上的dp
随机输出保平安啊和hdu4888一个意思,先跑个网络流然后dp判可行。==n^3的dp过不了,所以把n改成200。==因为出题人没有把多解的情况放在200*200以外的矩阵。#include #include #include #include #include using namespace std;const int MAX_N = 1207;const in原创 2014-08-21 17:53:30 · 2809 阅读 · 7 评论 -
Codeforces 67C Sequence of Balls 编辑距离 dp
题目链接:点击打开链接有一个交换操作比较特殊,所以记录每个点距离自己最近的那个字符的位置然后交换就相当于把第一行要交换的2个字符 之间的字符都删掉把第二行要交换的2个字符 之间的字符都插入第一行的2个字符之间然后再进行交换。#include #include #includeusing namespace std;#define inf 10000000#define原创 2014-08-10 17:29:44 · 1184 阅读 · 1 评论 -
HDU 4939 Stupid Tower Defense dp
因为瞬间伤害的塔一定是放在终点端的,所以枚举这种塔的个数然后就能把n^3变成n^2了#include #include #include typedef long long ll;const int N = 1500 + 2;ll d[N][N]; // j = 3;int Tt = 0, n, x, y, z, t;inline void up(ll& a, ll原创 2014-08-12 17:17:23 · 1271 阅读 · 0 评论 -
Codeforces 75D Big Maximum Sum 最大子段和 dp
题目链接:点击打开链接题意:第一行 n mn个vector下面n行 第一个数字u表示vector 的大小,然后后面u个数字给出这个vector最后一行m个数字表示把上面的vector拼接起来得到一个大序列,求这个大序列的最大子段和先预处理出每个vector的最大子段和,左起连续最大,右起连续最大,所有数的和然后dp 一下。。#include原创 2014-08-13 16:44:46 · 1261 阅读 · 0 评论 -
HDU 5000 Clone 规律+dp 2014 ACM/ICPC Asia Regional Anshan Online
HDU 5000 Clone 规律+dp 2014 ACM/ICPC Asia Regional Anshan Online每只羊有n个属性下面n个数字表示每个属性的值范围为[ 0, T[i] ]对于羊圈里的a羊和b羊,若a羊的每个属性都>=b羊,则a羊会杀死b羊。问羊圈里最多存活多少只羊。规律1:sum相同的羊不会互相杀死。因为若2个羊的属性都相同,a羊某个属性要增加1,则a羊另一个属性要减少1,这样ab一定能共存。规律2:sum不同的羊不会重合。我们设a羊sum = x,b羊sum原创 2014-09-13 17:21:30 · 3479 阅读 · 5 评论 -
Codeforces 77C 树形dp + 贪心
题目链接:点击打开链接题意:给定n个点,每个点的豆子数量下面是一棵树再给出起点每走到一个点,就会把那个点的豆子吃掉一颗。问:回到起点最多能吃掉多少颗豆子思路:树形dp对于当前节点u,先把子节点v都走一次。然后再往返于(u,v) 之间,直到u点没有豆子或者v点没有豆子。dp[u] 表示u点的最大值。a[u] 是u点剩下的豆子数。#inc原创 2014-08-15 16:44:44 · 1363 阅读 · 0 评论 -
HDU 5009 Paint Pearls _(:зゝ∠)_2014 ACM/ICPC Asia Regional Xi'an Online
呵呵#include #include #include #include typedef long long ll;using namespace std;const int N = 5 * 10000 + 5;int xval[N], dep;int n, a[N], pre[N];ll d[N];int pos[300], dd;void work() { d原创 2014-09-14 19:18:56 · 1707 阅读 · 0 评论 -
UVA 12446 How Many... in 3D! 搭积木 dp
题目链接:点击打开链接题意:用1*1*2的方块搭出2*2*N的方块的方法数则对于每一层有9种状态0、全为1.1、00__0表示这个为空,__表示这两个平躺着一个方块2、00110表示这格为空,1表示这格方块是直立放着的。如此类推除第0种共8种状态,然后就是简单的转移。而其他状态是无效的,不会参与到答案的计算中,所以不需要考虑#in原创 2014-11-27 00:16:05 · 1763 阅读 · 0 评论 -
SGU 365 Ships of the Desert dp
题目链接:点击打开链接题意:给定S,求能构造出多少个S位的数字使得该数字呈一个单峰型即010 0011221 对于一个数字i 从左边到i是非递减的,从i到右边是非递增的。构造出的数字允许有前导0思路:Z[i][j]表示i位 最高位为j的非递减的个数dp[i][j] 表示i位 最高位为j 表示 有一段非递减,现在是非递增的方法数。答案就是Z[i] + dp[i].原创 2014-11-30 11:07:19 · 1176 阅读 · 0 评论 -
HNU 13108 Just Another Knapsack Problem ac自动机上的dp
题目链接:点击打开链接题目链接:给定一个母串。给出n个子串和子串对应的价值用下面的n个子串拼出母串,则得到的价值为子串价值和拼接时不能有重叠遗漏(即母串的每个位置恰好被覆盖一次)在ac自动机上找的时候搞一个dp数组就好了#include#include#include#include#includeusing namespace std;const原创 2014-11-29 15:51:42 · 1200 阅读 · 0 评论 -
POJ 2677 Tour 双调旅行商 dp, double+费用流
题目链接:点击打开链接题意:给定二维平面上的n个点从最左端点到最右端点(只能向右移动)再返回到到最右端点(只能向左移动,且走过的点不能再走)问最短路。dp 点击打开链接#include #include #include #include #include #include #include #include using namespace std;#de原创 2014-05-17 16:29:31 · 1438 阅读 · 0 评论 -
CSU 1527 Bounty Hunter dp 双调旅行商
题目链接:点击打开链接裸的双调旅行商问题啦#include #include #include #include #include #include #include #include using namespace std;#define ll int#define N 550#define inf 1152921504606846976struct node{原创 2015-03-28 09:40:45 · 1892 阅读 · 0 评论 -
CodeForces 173C Spiral Maximum dp 矩阵降次
题目链接:点击打开链接题意:给定n*m的矩阵,可以在矩阵中画出题目图片里黑色的线条。任选一个点,左下右上的顺序走,走出图里的情况。使得走过的数字和最大,问最大的和。思路:点击打开链接题解比较详细了import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.Pr原创 2015-03-11 23:06:30 · 1401 阅读 · 0 评论 -
SGU 482 Impudent Thief dp
题目链接:点击打开链接题意:给定原创 2014-09-18 16:59:01 · 1144 阅读 · 0 评论 -
Codeforces 528B Clique Problem dp+线段树(or 树状数组)
题目链接:点击打开链接题意:给定数轴上的n个点。下面n行每行两个数 xi, wi 表示点和点权。对于任意两个点u, v若dis(u,v) >= u_w+v_w 则这两个点间可以建一条边。(in other words 若两点间距离大于两点的权值和则可以建边)找一个最大团,输出这个最大团的点数。其实对于一个权值点我们可以认为是一个区间如: 4 5 ,可以认为是区间[-原创 2015-03-18 16:19:09 · 1456 阅读 · 0 评论 -
Codeforces 296B Yaroslav and Two Strings dp+容斥(入门
题目链接:点击打开链接题意:给出长度为n的2个数字串S ,T(有些位置为?表示可以随便填数字)求:有多少种填充方式使得 S[i]>T[i] && S[j] 思路:先求出ans表示所有填充方式,ans = 10^num, num为2个串?的总个数dp[0][i]表示长度为i 且对于任意的 j( 1dp[1][i] 表示 S[j]==T[j]dp[2[i] 表示 S[j原创 2015-04-05 22:09:10 · 1156 阅读 · 0 评论 -
HDU 5325 CRAZY BOBO 排序
链接Crazy BoboTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 252 Accepted Submission(s): 74Problem DescriptionBobo has原创 2015-07-28 20:23:13 · 2183 阅读 · 7 评论 -
Codeforces 570E Pig and Palindromes dp
链接题解链接:点击打开链接题意:给定n*m的字母矩阵。从左上角到右下角的路径中有多少条是回文。思路:显然是要从头尾同时dp的,路径1是从左上角到第j行,路径2是从右下角到第k行dp[i][j][k] 表示路径长度为i,路径1从左上角到第j行,路径2从右下角到第k行,且路径1和2是匹配的方法数。对于路径1、2合并时要分一下奇偶。原创 2015-08-14 20:53:39 · 2406 阅读 · 0 评论 -
CodeForces 148E Porcelain dp+背包(水
题目链接:点击打开链接题意:给定一个n层书架,一共取m本书。下面n行给出每层书的价值。每次可以取任意一层的最左端或最右端的一本书。问能获得的最大价值。思路:1、显然是先求出对于每层任取任意本书能获得的最大价值。2、然后背包一下。1:对于一层书任意j本,那么一定是从左端取k本,右端取 j-k本,求个前缀和然后枚举 j和k即可。每层n^2的dp2:分组背原创 2015-03-05 19:59:32 · 1164 阅读 · 0 评论 -
CodeForces 264C Choosing Balls dp(水
题目链接:题意:给定n q 表示有n个石头 q个询问下面n个数字给出每个石头的价值下面n个数字给出每个石头的颜色(用1-n表示)选出一个子序列使得序列的权值和最大(序列权值计算方式:当这个点的颜色和前面那个点颜色相同时 贡献 value * a, otherwise 贡献 value * b)下面q行,每行给出 a 和 b的值。思路:首先求dp方程 dp[i]表示颜原创 2015-03-03 22:58:39 · 1152 阅读 · 0 评论 -
POJ 1015 Jury Compromise DP+记录路径
找每个点能转移出去的状态时要回溯到根去掉所有能转移的点来去重。。可能这种做法在距离根距离较小的时候能用。。(隐隐感觉有bug,还是人云亦云地做掉先了。。)#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include原创 2014-12-01 19:48:32 · 1611 阅读 · 0 评论 -
CodeForces 507D The Maths Lecture 构造恰好n位数且存在一个后缀能被k整除的方法数 dp
题目链接:点击打开链接D. The Maths Lecturetime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAmr doesn't like Maths原创 2015-01-24 19:02:35 · 1569 阅读 · 0 评论 -
Codeforces 512B Fox And Jumping dp+gcd
题目链接:点击打开链接题意:给定n个数下面2行是n个数字和购买该数字的花费。使得购买的数字能通过加减获得任意一个正整数。问最小的花费是多少。(购买得到的数字可以多次使用)思路:首先是要获得任意的正整数,其实就是获得1就可以了。而获得1的话 只需要我们选的数的gcd = 1即可。设 有整数x,y,要使得x y能构造任意一个整数,充要条件就是gcd(x, y)=原创 2015-02-03 18:34:54 · 1691 阅读 · 0 评论 -
UvaLive 4254 Processor 优先队列
题目链接:点击打开链接除了Integer, String等,其他(即对象)都是引用。。(就是地址,想要和C一样的效果要新建一个对象)import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java原创 2015-01-03 15:52:30 · 1158 阅读 · 0 评论 -
CSU 1354 Distinct Subsequences 求不同子序列和 dp
题目链接:点击打开链接题意:给定一个长整数求所有不同的子序列和。思路:dp[i]表示以i数字为结尾的序列的和num[i]表示以i数字为结尾的序列个数import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;i原创 2015-01-23 19:29:40 · 1137 阅读 · 0 评论 -
CSU 1354 Distinct Subsequences 求不相同子序列的和 dp
题目链接:点击打开链接Description Give a positive number, count the sum of the distinct subsequence of it, moreover, any subsequence should not contain leading zeroes except it is zero.原创 2015-01-24 19:11:23 · 1437 阅读 · 0 评论 -
UVALive 3029 City Game 悬线法求最大子矩阵面积 dp
题目链接:点击打开链接Bob is a strategy game programming specialist. In his new city building game the gaming environment is as follows: a city is built up by areas, in which there are streets, trees, factor原创 2015-01-24 19:46:41 · 1379 阅读 · 0 评论 -
CodeForces 264B Good Sequences dp
题目链接:点击打开链接题意:给定n个数,构造一个序列(只能选给出的n个数,但数字可重复用)使得序列严格递增且相邻的两个数字不互质思路:因为是严格递增,所以给输入的n个数排个序,相当于选n个数中的子序列了。把每个数都分解质因数,然后用质因数转移方程即可。import java.io.BufferedReader;import java.io.InputStreamR原创 2015-03-01 23:00:46 · 1099 阅读 · 0 评论