
动态规划 dp
Mr.Gzj
这个作者很懒,什么都没留下…
展开
-
鸡蛋掉落问题
题意:有kkk个鸡蛋,nnn层高的楼,问:最坏情况下,最少需要扔多少次鸡蛋才能知道从第几层楼开始往下扔鸡蛋,鸡蛋会碎。思路:这个题原题题意太迷,我还说二分呢,后来认真看看题目才知道,鸡蛋是有限的,也就是说,假设我们有两个鸡蛋,要测100层楼,比如我从50层先扔下去一个,它碎了,那我们另一个就不能冒险,只能从第一层开始,假设在第49层碎了,那扔了50次才试出来。动态规划的思想可以很好的解决这个问...原创 2020-03-22 10:49:36 · 380 阅读 · 0 评论 -
牛客挑战赛30 A 小G数数
链接:https://ac.nowcoder.com/acm/contest/375/A来源:牛客网给你一个1~n的排列A1,A2...AnA1,A2...An,问有多少个四元组(a,b,c,d),满足a < b < c < d且Aa<Ac<Ab<AdAa<Ac<Ab<Ad。输入描述:第一行一个数n。接下来一行n个数,描述排...原创 2019-03-10 11:19:06 · 294 阅读 · 0 评论 -
P1387 最大正方形
思路:if (a[i][j]) f[i][j]=min(min(f[i][j-1],f[i-1][j]),f[i-1][j-1])+1;#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define ll long long#define mem(ar,num) memset(ar,num,sizeof(ar))#define m...原创 2019-03-11 20:34:05 · 186 阅读 · 0 评论 -
P1736 创意吃鱼法
题目思路:以row数组记录行中从此位置到下一个1一共多少0,col记录列中的。转移方程:f[i][j]=min(f[i-1][j-1],min(col[i-1][j],row[i][l-1]));#include<bits/stdc++.h>#define fi first#define se second#define INF 0x3f3f3f3f#define...原创 2019-03-21 15:30:33 · 139 阅读 · 0 评论 -
P2734 游戏 A Game(博弈论+区间dp)
https://www.luogu.org/problemnew/show/P2734思路:设f[i][j]是从i到j的最优解,s是从1到i的和,f【i】【j】=s【j】-s【i】-min(f【i+1】【j】,f【i】【j-1】);#include <iostream>#include <cstdio>using namespace std;int n, f...原创 2019-03-29 19:06:55 · 371 阅读 · 0 评论 -
P2733 家的范围 Home on the Range(dp)
https://www.luogu.org/problemnew/show/P2733思路:dp[i][j]表示第i,j的位置之前有多大的正方形,然后统计一下大于i的就是i的正方形#include <iostream>#include <cstdio>using namespace std;int n,mp[260][260],a[260][260];in...原创 2019-03-29 20:08:54 · 213 阅读 · 0 评论 -
湫湫系列故事——减肥记I(完全背包水题)
http://acm.hdu.edu.cn/showproblem.php?pid=4508思路:完全背包#include<bits/stdc++.h>#define fi first#define se second#define INF 0x3f3f3f3f#define ll long long#define ld long double#define me...原创 2019-03-27 23:40:37 · 295 阅读 · 0 评论 -
分组背包
1、HDU1712题意:有n门课程,和m天时间,完成a[i][j]得到的价值为第i行j列的数字,求最大价值......思路:分组背包,就是第n门课程,可以做一天,可以做两天,但它们相斥,你做了一天,就不能再做一天...也就是不能再做这门课程了......#include<cstdio>#include<iostream>#include<cstrin...原创 2018-12-05 11:39:27 · 226 阅读 · 0 评论 -
HDU-2995
The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work in the lucrative...原创 2018-11-04 15:46:26 · 310 阅读 · 0 评论 -
多重背包二进制优化分析
列出一个模板供参考:#include<bits/stdc++.h>#include<time.h>#define INF 0x3f3f3f3fusing namespace std;#define N 1000 #define M 100000000 int m[N],c[N],w[N],f[M];int V;int max(int a,int b){...原创 2018-11-01 23:58:47 · 653 阅读 · 0 评论 -
P1064
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件电脑 打印机,扫描仪书柜 图书书桌 台灯,文具工作椅 无...原创 2018-10-31 21:32:14 · 132 阅读 · 0 评论 -
P2725 邮票 Stamps
题目背景给一组 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票。计算从 1 到 M 的最大连续可贴出的邮资。题目描述例如,假设有 1 分和 3 分的邮票;你最多可以贴 5 张邮票。很容易贴出 1 到 5 分的邮资(用 1 分邮票贴就行了),接下来的邮资也不难:6 = 3 + 3 7 = 3 + 3 + 1 8 = 3 + 3 ...原创 2019-03-27 21:59:44 · 291 阅读 · 0 评论 -
P2015 二叉苹果树(树形dp)
#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 1000;int n, m, h[N], cnt, f[N][N], sz[N];struct node { int v, w, net;} no[N];voi...原创 2019-04-12 09:54:47 · 212 阅读 · 0 评论 -
P1095 守望者的逃离
思路:一共三种情况,分开处理,先处理用能量的,再处理跑步的#include<bits/stdc++.h>#define fi first#define se second#define INF 0x3f3f3f3f#define ll long long#define ld long double#define mem(ar,num) memset(ar,num,si...原创 2019-04-23 17:22:43 · 356 阅读 · 0 评论 -
P1005 矩阵取数游戏(区间dp+java)
题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j均为非负整数。游戏规则如下:每次取数时须从每行各取走一个元素,共nn个。经过mm次后取完矩阵内所有元素; 每次取走的各个元素只能是该元素所在行的行首或行尾; 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值\times 2^i...原创 2019-05-18 23:52:44 · 585 阅读 · 0 评论 -
B - Flipping Game(dp)
题意: 给出n,k,m三个数,和两个只有0和1 的字符串,问对第一个字符串选取m个字符,反转,重复k次,问有多少种方法变成第二个字符串。对答案取模。思路: 可以发现,反转奇数次后结果是不一样的,所以对比两个字符串,不一样的地方一定是要反转奇数次的。设dp[i][j]表示第i次反转,有j个灯泡反转了奇数次。设第i次反转选择了a个反转为奇数次的,则dp[i+1][j-a+m-a]+=dp[i][j]...原创 2019-07-12 14:22:39 · 448 阅读 · 0 评论 -
hdu4632Palindrome subsequence(区间dp)
题意:给出字符串,求有多少回文子序列。思路:dp[i][j]表示i~j区间有多少回文子序列,所以dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]+mod;当出现减法时要加上模再取模,不然可能出现负数,因为这个wa了好几次。。然后如果s[i]==s[j],说明两边的字母一样,dp[i][j]=dp[i][j]+dp[i+1][j-1]+1;前两个应该没问题,...原创 2019-03-07 10:18:30 · 135 阅读 · 0 评论 -
F. Clear the String
You are given a stringssof lengthnnconsisting of lowercase Latin letters. You may apply some operations to this string: in one operation you can delete some contiguous substring of this string, if...原创 2019-03-06 23:13:57 · 306 阅读 · 0 评论 -
HDU - 1243 (一个恶心的错误)
有一场比赛:这次训练比赛的规则是这样的:1、每个队员从出发点开始,沿着一条唯一的笔直道路跑直到终点,途中不允许往回跑,否则将被取消比赛资格。2、出发前,每个队员的枪膛内都被装了顺序一样的、用小写英文字母标明类型的子弹序列,每位队员被告知这一序列的信息;同时,每位队员也被告知恐怖分子即将出现的序列和类型(同样用小写英文字母标明类型)。3、在跑动的过程中,若发现“恐怖分子”,特警队员可以...原创 2019-12-30 19:12:07 · 352 阅读 · 0 评论 -
poj1458最长公共子序列
DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., ...原创 2018-11-28 21:13:20 · 185 阅读 · 0 评论 -
P1020
题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是\le 50000≤50000的正整数),计算这套系统最多能拦截多少导弹...原创 2018-11-05 20:27:36 · 286 阅读 · 0 评论 -
P1233
题目描述一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的。棍子可以被一台机器一个接一个地加工。机器处理一根棍子之前需要准备时间。准备时间是这样定义的:第一根棍子的准备时间为1分钟;如果刚处理完长度为L,宽度为W的棍子,那么如果下一个棍子长度为Li,宽度为Wi,并且满足L>=Li,W>=Wi,这个棍子就不需要准备时间,否则需要1分钟的准备时间;计算处理完n根棍子所需要...原创 2018-11-08 11:20:32 · 485 阅读 · 0 评论 -
3027 线段覆盖 2
题目描述 Description数轴上有n条线段,线段的两端都是整数坐标,坐标范围在0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合)且线段价值之和最大。n<=1000输入描述 Input Description第一行一个整数n,表示有多少条线段。接下来n行每行三个整数, ai bi ci,分别代表第i条线段的左端...原创 2019-01-02 23:24:59 · 177 阅读 · 0 评论 -
poj2385
Apple CatchingTime Limit: 1000MS Memory Limit: 65536K Total Submissions: 15940 Accepted: 7856 DescriptionIt is a little known fact that cows love apples. Farmer John has two ap...原创 2019-02-18 20:49:29 · 280 阅读 · 3 评论 -
hdu1024(最大M子段和)
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4521 Accepted Submission(s): 1476 Problem DescriptionNow I think you...原创 2019-02-18 23:56:56 · 302 阅读 · 0 评论 -
HDU1114Piggy-Bank
Problem DescriptionBefore ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The ...原创 2019-02-28 20:39:04 · 376 阅读 · 0 评论 -
1051 最大子矩阵和
1051 最大子矩阵和一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。例如:3*3的矩阵:-1 3 -12 -1 3-3 1 2和最大的子矩阵是:3 -1-1 31 2#include<bits/stdc++.h>#define INF 0x3f3f3f3f#define ll long lon...原创 2019-02-20 01:14:01 · 309 阅读 · 0 评论 -
小米oj最长连续数列
描述输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) 。输入54,55,300,12,56输出3输入样例100,4,200,1,3,254,55,300,1215,4,3,2,11,2,3,4,5,6这输入得处理一下,题目还理解成最大上升/下降子序列了,气死!#include<bits/stdc++.h>#d...原创 2019-03-01 19:41:08 · 342 阅读 · 0 评论 -
山区修路
题目描述某山区的孩子们上学必须经过一条凹凸不平的土路,每当下雨天,孩子们非常艰难。现在村里走出来的Dr. Kong决定募捐资金重新修建着条路。由于资金有限,为了降低成本,对修好后的路面高度只能做到单调上升或单调下降。为了便于修路,我们将整个土路分成了N段,每段路面的高度分别A1,A2,….,An。由于将每一段路垫高或挖低一个单位的花费成本相同,修路的总费用与路面的高低成正比。...原创 2019-03-05 16:01:49 · 521 阅读 · 0 评论 -
hdu1069Monkey and Banana
一组研究人员正在设计一项实验,以测试猴子的智商。他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子。如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉。研究人员有n种类型的砖块,每种类型的砖块都有无限个。第i块砖块的长宽高分别用xi,yi,zi来表示。 同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高。在构建塔时,当仅当A砖块...原创 2019-02-27 12:32:51 · 249 阅读 · 0 评论 -
P1880 [NOI1995]石子合并
题目描述在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.输入输出格式输入格式:数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.输出格式:输出共2行,第1行为最小...原创 2019-03-06 15:07:37 · 235 阅读 · 0 评论 -
pojBrackets(区间dp)
DescriptionWe give the following inductive definition of a “regular brackets” sequence:the empty sequence is a regular brackets sequence, ifsis a regular brackets sequence, then (s) and [s] are...原创 2019-03-06 15:29:17 · 201 阅读 · 0 评论 -
poj1651Multiplication Puzzle(区间dp)
DescriptionThe multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of the row and scores the number of points eq...原创 2019-03-06 16:15:32 · 171 阅读 · 0 评论 -
luoguP1006 传纸条
题目描述小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标(1,1(1,1),小轩坐在矩阵的右下角,坐标(m,n)(m,n)。从小渊传到小轩的纸条只可以向下或者向...原创 2018-11-30 16:20:53 · 148 阅读 · 0 评论