dp
oranges_c
落寞是岁月的痕迹
展开
-
【HDU5074】Hatsune Miku(简单DP)
题解摘自:http://blog.csdn.net/sr_19930829/article/details/40392311?utm_source=tuicool&utm_medium=referral 分情况讨论:当note[i] >0 (i>=2)时:当note[i-1]>0时: dp[i][note[i]]=dp[i-1][note[i-1]]+score[note原创 2016-08-31 12:19:55 · 219 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping! && 1114 Piggy-Bank 简单dp
hdu1087 题目大意: 给你N个数,问满足递增子序列的最大和为多少。dp[i] := 表示以第i个数为结尾满足递增条件的最大和#include <bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))typedef long long LL;const int INF =原创 2017-02-15 21:55:23 · 266 阅读 · 0 评论 -
未完成~简单dp
慢慢补充。 hdu1003hdu1024hdu1081……原创 2017-02-13 19:59:50 · 392 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L2-014. 列车调度(LIS)
题目链接 决赛的L2-2,当时暴力下,有几个case是TLE的。。 现在一看,就感觉有点像是LIS,然后交了下还真过了。。至于为什么 要将一个序列以递减的顺序出栈,在每个栈的序列都要是从上到下是递减的。 假设栈的数量小于LIS,那么总会有一个数的前面有比它小的数 就是有一个栈的不是按照从上到下是递减的 那么出栈也不可能是递减出栈了#include <cstdio>原创 2017-02-11 16:54:06 · 456 阅读 · 0 评论 -
【ZCMU1894】Power Eggs(鹰蛋问题dp)
题目链接题目大意: 一栋建筑有N层,现在又k个蛋,每个蛋都一样。 现要确定在最坏情况下蛋在第几层掉下会碎需要实验多少次。 如果在f层掉下,那么在f层下掉下都不会碎,在f层及以上掉下都会碎。 若一个蛋没碎可重复使用。资料1 资料2 最容易想到的算法:假设有n楼层,k个鹰蛋,则在第i层试探时会出现两种状态,一种状态是鹰蛋摔破了,则我们下一步只有n-1个鹰蛋,同时总楼层原创 2017-03-19 18:21:51 · 2700 阅读 · 0 评论 -
队内训练赛三
PS:来点简单dp + 贪心A:51Nod - 1183 编辑距离状态转移int cost = (s1[i-1] == s2[j-1] ? 0 : 1);int delection = dp[i][j-1] + 1;int insertion = dp[i-1][j] + 1;int substitution = dp[i-1][j-1] + cost;dp[i][j原创 2017-04-06 22:34:43 · 294 阅读 · 0 评论 -
【ZOJ3160】Couples(区间dp)
题目链接 题目大意: 有n个人,m对夫妻关系。 n个人排成一排,相邻的人如果是夫妻关系,则可以走出。夫妻两边的人成了相邻的人。 问最后最多可以走出多少人。比较裸的区间dp dp[i][j] := 表示在第i个人到第j个人之间最多走出的人数(包括i,j) 分两种情况讨论1如果a[i]与a[j]是匹配的并且满足dp[i+1][j-1] == j-i-1也就是说i与j之原创 2017-04-02 18:05:57 · 297 阅读 · 0 评论 -
队内训练赛二
A:ZOJ3158 Cut The Cake 题目大意: 给你一个m*n的矩阵,从上到下把它划分成两个子矩阵,两个子矩阵满足值的和的差不超过k,求最小的差值。 Note:不能在第一列的左边和最后一列的右边切。由于m,n值小,我们可以枚举切的位置直接搜索。在这之前我们要先预处理一下每一行的前缀和。方便搜索时记录最小值。#include <bits/stdc++.h>us原创 2017-04-02 17:54:50 · 313 阅读 · 0 评论 -
【HOJ2662】Pieces Assignment(状压dp)
题目链接 PS:这是旧OJ的题,代码在新OJ里同样的题却T了,,或许加强数据了吧。然而我外加了个数组,却wa了。让我有点怀疑确定不是数据的问题?题目: 有一个n*m的棋盘(n、m≤80,n*m≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻(每个棋子最多和周围4个棋子相邻)。求合法的方案总数。经典的棋盘问题。 显然直接暴搜会T。 对于这类数据在10左右原创 2017-04-06 21:22:31 · 249 阅读 · 0 评论 -
【ZOJ3777】Problem Arrangement(状压dp)
题目链接 题目大意: 有n道题,第i道题放在第j个有价值PijP_{ij} 有T组数据。 有n道题,给你一个价值m。 问有多少种方案使得总价值大于等于m。 输出方案数/总数(分数最简) 不存在则输出”No solution”.如果直接搜的话,时间复杂度是O(n!)的,n<=12显然会超时。 考虑dp,考虑状态压缩dp。 我一开始想的是dp[i][j] :=原创 2017-04-06 21:54:46 · 306 阅读 · 0 评论 -
Educational Codeforces Round 19-E. Array Queries(简单dp)
题目链接 题目大意: 给你n个数,ai∈[1,n]a_i\in[1,n] qq个查询,每次给你pp,kk。 有操作:p−>p+a[p]+kp -> p + a[p] + k 问经过多少次这样的操作,使得p>np > n一开始我是记忆化搜索, 然而提交运行与本地运行不一致???第二次碰到这个问题,完全不知道什么原因。 爆栈?怎么样例就爆。。提交运行: 本地运原创 2017-04-16 12:41:13 · 270 阅读 · 0 评论 -
【HDU4991】Ordered Subsequence(离散化+dp+树状数组)
题目链接 题目大意: 给你n个数的序列,问长度为m的严格上升子序列有多少个。答案对123456789取模 (n≤10000,m≤100)(n\leq10000 , m\leq100)有一个暴力dp dp[i][j]dp[i][j] :=表示以第i个数结尾,上升子序列长度为j的个数 如果a[k] < a[i] dp[i][j]+=dp[k][j−1]dp[i][j]原创 2017-04-20 20:47:51 · 307 阅读 · 0 评论 -
【zoj3962】Seven Segment Display(数位dp)
题目链接 题目大意: T组数据。 给你一个n,和8位的十六进制数num,每一位的十六进制数都有一个权值, 问[num,num+n-1]的每个数的权值和。省赛的时候,后面想到了数位dp,但是在想状态的时候,卡在了第二维的定义上。 (其实当时我很想睡觉。orz.还有就是我太菜。 (貌似权值和作为dp的状态很常见,以后注意一下。。这么水的题,我tm竟然现场没想到,菜的想原创 2017-04-24 20:25:14 · 762 阅读 · 0 评论 -
【HDU6024】Building Shops(简单dp)
题目链接题目大意: n个教室,选一些教室建造糖果商店。 每个教室,有一个坐标xix_i和在这个教室建造糖果商店的花费cic_i 对于每一个教室,如果这个教室建造糖果商店,花费就是cic_i,否则就是与坐标在自己前面的建造糖果商店的距离 求最小花费这题一开始想的贪心,但是是错的。 比如 3 1 1 10 10 11 99考虑dp dp[i][1]:=表示第i原创 2017-05-08 20:24:23 · 470 阅读 · 0 评论 -
【zcmu1920】nazime's 友人帐(贪心,树形dp)
题目链接 原题题目没说根是多少。 但是连通块必须包含1,我们不妨以1为根。1.假设有个点i,那么如果以点i为根的子树上有点包含在所选取的块,那么也必定会对i这个点进行同样的操作。因为到1的路径中必定包含i。 2.所以点i的操作次数就是点i的儿子节点中的最大操作次数 (因为如果有两个或以上的结点需要相同的操作,可以合并操作) (对于叶子结点,如果权值为正down的值就是权值,否则up的值原创 2017-05-28 22:18:51 · 368 阅读 · 0 评论 -
hdu_round1-1004 离开迷宫(dp)
yyf是一个日理万机的男人,但自从最近他勾搭上了女神之后便随叫随到,以至于荒废了很多事情。这天,yyf正在探索一个充满陷阱的古代迷宫,他的女神来电话了,由于离迷宫出口太远了,可能要花很多时间才能回去,所以yyf不打算原路返回,而是挥动他那强壮有力的右手砸开墙壁直接走向出口。已知yyf在(1,1)的位置,而出口在(N,M)的位置,yyf每次只会向下或向右走。原创 2017-07-02 22:34:38 · 433 阅读 · 0 评论 -
hdu_round3-1003.bx回文(manacher+dp)
bx回文Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 501 Accepted Submission(s): 89Problem Description bx有一个长度一个字符串S,bx可以对其进行若干次操作。每次操作可以删原创 2017-07-16 19:11:02 · 212 阅读 · 0 评论 -
【HDU1176】免费馅饼(记忆化搜索)
题目链接简单的记忆化搜索。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;#define ALL(v) (v).begin(),(v).end()#define cl(a,b) memset(a,b,sizeof(a))原创 2017-02-14 14:05:24 · 371 阅读 · 0 评论 -
【HDU1024】Max Sum Plus Plus(dp)
题目链接题目大意: 将n个数的序列分成不想交的m段,问m段区间的最大和为多少转自kuangbin 设Num为给定数组,n为数组中的元素总数,Status[i][j]表示前i个数在选取第i个数的前提下分成j段的最大值,其中1<=j<=i<=n && j<=m,状态转移方程为:Status[i][j]=Max(Status[i-1][j]+Num[i],Max(Status[原创 2017-02-14 13:24:45 · 208 阅读 · 0 评论 -
【POJ3254】Corn Fields(状态压缩DP)
一道状态压缩DP入门的题。学习下状压DP。 题目大意: 给你一个n*m的图。为0不能放羊,为1可以放羊,一个格子只能放一只羊,并且不能有羊相邻的情况有多少种。状态压缩就是将状态用一个十进制数来表示,十进制数用二进制表示就可以表示状态,所以会用到位运算。 dp[i][j]:=第i行状态为j的方案数; 对于可以放羊的位置,如果放羊则为1,不放则为0; 样例第一行有8种情原创 2016-08-11 16:11:28 · 435 阅读 · 0 评论 -
【HDU5800】To My Girlfriend(DP + 滚动数组)
题目大意: 指n个物品里面子集的权值和为m,并且这个子集里面有i、j, 没有k、l的子集的个数;(i,j,k,l分别不同) 题解: 令dp[i][j][s1][s2]表示前i个物品填了j的体积,有s1个物品选为为必选,s2个物品选为必不选的方案数(0<=s1,s2<=2),则有转移方程dp[i][j][s1][s2] = dp[i - 1][j][s1][s2] + d原创 2016-08-08 13:40:30 · 313 阅读 · 0 评论 -
【POJ2385】Apple Catching(简单DP)
题目大意:两棵树,有T秒钟,每秒钟都会下落一个苹果,接下来T行表示下落苹果的树的编号。最多有W次交换次数,初始在1树。 dp[i][j] = max(dp[i-1][j],dp[i-1][j-1]); 还要判断现在所在的树是否有苹果落下。 还要加上(j%2) + 1 == tree[i]; 0次是在1树, 所以如果交换次数是奇数则在第二棵树,判断i秒钟苹果是否在第二棵原创 2016-09-16 23:25:35 · 326 阅读 · 0 评论 -
【HDU5823】color II(状压DP)
记录一个菜逼的成长。。令dp[s]为子图S已经染色的最少染色数,那么有dp[s]=min(dp[s],dp[s^s0]+1)其中s0是S的独立子集,可以全部染成一种颜色。#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <cstdlib>原创 2016-08-13 20:30:28 · 303 阅读 · 0 评论 -
【HDU5816】Hearthstone(状压DP)
推荐几篇好看懂的博客。 参考博客: http://blog.csdn.net/qq_21057881/article/details/52167285 http://blog.csdn.net/zzz805/article/details/52169725我的代码,是卡过去的。。#include <cstdio>#include <iostream>#include转载 2016-08-14 11:02:41 · 284 阅读 · 0 评论 -
Codeforces Round #374 (Div. 2)
A,B水题。 C. Journey 题目大意: 给你N个点M条边的DAG,有T的时间限制.接下来M行(u,v,t)代表从u到v的时间为t。你站在1点 ,问到n点,不超过T时间最多走过几个点,并输出路径。跟拓扑排序很像,加上dp。 dp[i][j] := 站在i点,走过j个点的最短时间。 显然dp[i][j] = min(dp[i][j] + t[i],dp[to[i原创 2016-10-01 12:23:22 · 308 阅读 · 0 评论 -
【POJ3252】Round Numbers(数位DP)
题目链接:http://poj.org/problem?id=3252 题目大意: 如果一个数的二进制表示中0的个数大于等于1的个数,那么这个数是符合条件的。 给你左端点和右端点,问在这区间内符合条件的数有多少。dp[pos][num0][num1] := 第一维表示从高位往低位枚举到pos的位置,第二维表示二进制中0的个数,第三维表示二进制中1的个数,结果为满足条件的原创 2016-10-26 21:39:36 · 235 阅读 · 0 评论 -
【51Nod1202】子序列个数(简单dp)
题目链接 给定一个正整数序列,序列中元素的个数和元素值大小都不超过105, 求其所有子序列的个数。注意相同的只算一次:例如 {1,2,1}有子序列{1} {2} {1,2} {2,1}和{1,2,1}。最后结果对10^9 + 7取余数。分析: 万能枚举,时间复杂度O(2^n)——因为每一项都可以选择取或者不取嘛。这个不可行,n太大了。我们想想动态规划?严格来讲这个题不是一个原创 2016-11-27 14:12:27 · 1214 阅读 · 0 评论 -
【HDU4352/ZCMU1781】XHXJ's LIS(数位DP)
题目链接 题目大意: 把一个数看成序列,可以求出一个严格最长上升子序列的长度。 如123可以看成1,2,3 严格最长上升子序列长度为3 现在给你一个区间[l,r]和一个k,问在这个区间内满足严格最长上升子序列的长度为k的数有多少个。ps:没想到今年的校赛竟然出了原题,而且还是之前做过的。。然而比赛中却没什么印象。。血亏。。这算是数位dp的模板题吧。 分析: 定义一原创 2016-12-22 18:26:20 · 368 阅读 · 0 评论 -
codeforces Good Bye 2016-D New Year and Fireworks(dfs)
题目链接 题目大意: 一个烟花上天会分裂n-1次,给你n个每次飞行的深度,每次分裂会分裂成两个方向均与原来方向成45度,求覆盖了多少个点最多30个深度,每个深度最大为5,所以单向最长距离150,所以图只需要300*300即可。 定义一个记忆化数组dp[x][y][dir][cnt] := 在x,y处,朝dir方向,这是第cnt次飞行ps:本地运行与提交运行为什么输出不同原创 2016-12-31 15:04:00 · 304 阅读 · 0 评论 -
"玲珑杯”ACM比赛 Round #8-E XJT Love Digits(递推)
题目链接 题目大意: 有一个函数f(x) = x的各位数字之和,给你n个数,q次询问 每次询问给出一个x,求从a1,a2,...,axa_1,a_2,...,a_x里选一个最大的数p使得f(p) = f(axa_x)建立一个链接表形式的数组m. m[f[i]].first,m[f[i]].second := 表示到第first个数过,和为f[i]的最大的数second原创 2017-01-14 16:56:14 · 497 阅读 · 0 评论 -
Codeforces Round #396 (Div. 2)-C. Mahmoud and a Message(dp)
题目链接 题目大意: 给你n长度的字符串,以及26个数,表示’a’-‘z’所在字符串的最大长度 问满足条件的字符串集合划分数,以及最大的子串长度,最小的集合数dp[0][i] := 表示前i个字符的子串划分数 dp[1][i] := 表示前i个字符的划分里最大的字串长度 dp[2][i] := 表示前i个字符的划分里最小的集合数#include <cstdio>#原创 2017-02-08 16:41:14 · 286 阅读 · 0 评论 -
Codeforces Round #392 (Div. 2)-D. Ability To Convert(贪心+dp)
题目链接 题目大意: 给你一个进制数n,和一个不超过60位的数k。 以超过十的数代替字母。 问转换成十进制的数最小是多少。PS:果然dp的题懵逼时刻占大多数。dp[i] := 以第i个数结尾的最小的十进制数。 i枚举起点,j枚举起点往后不超过n的数,那么dp[j+1] = min(dp[j+1],dp[i]*n+x) 比如3^3+2*3^2+3^1 = ((3+2原创 2017-01-20 13:53:42 · 340 阅读 · 0 评论 -
团体程序设计天梯赛-练习集-L3-011. 直捣黄龙(最短路+计数)
题目链接 最快路径其实就是最短路径。以下数组都在满足最短路条件下 num[i] := 表示到达i点的最短路径数 len[i] := 表示到达i点所经过的点数,不包括起点 tot[i] := 表示到达i点所救的人数#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#原创 2017-02-12 15:17:24 · 633 阅读 · 0 评论 -
hiho一下 第137周-建造基地(背包dp)
题目链接 官方题解 初一看很容易看出是完全背包的dp。 但是还要考虑建设值的溢出,也就是说dp[k]不一定是成本最小的。 我们可以往前推一步,假设dp[k],dp[k+1]…中最小的为dp[x] 那么dp[x] 肯定是由小于k的某个状态y,dp[y]+a[i]递推而来。 我们就枚举y值来更新x值。把大于k的x值都算在k上。那么最后答案就是dp[k]的相加。 时间原创 2017-02-13 15:20:56 · 246 阅读 · 0 评论 -
Codeforces Round #393 (Div. 2)-D. Travel Card(dp)
题目链接dp[i] := 表示以第i个旅行结尾的最少花费。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int INF = 0x3f3f3f3f;const int maxn = 100000 + 10;int a[maxn],dp[maxn];int main(){原创 2017-01-23 21:01:11 · 335 阅读 · 0 评论 -
【HDU6035】Colorful Tree(dfs,树形dp)
There is a tree with n nodes, each of which has a type of color represented by an integer, where the color of node i is ci.The path between each two different nodes is unique, of which we define the value as原创 2017-08-25 12:45:32 · 270 阅读 · 0 评论