HDU 1508 DP】的更多相关文章

题意:规定一个数列 = {这个数的质因子只能包括2,3,5,7},求第n个数字是多少: 思路:暴力打表,然后只粘数据,虽然过了,但是正解其实是DP,每一个数字都是由某一个该数列里的某一个数字乘以2,3,5或者7形成的,因此按照这个方法暴力数列: 其中因为英文不是很好,WA了好几次,输出有问题,11是11st,但121就不是121st了,应该是121th,2,3同理.…
Man Down Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2030    Accepted Submission(s): 743 Problem Description The Game “Man Down 100 floors” is an famous and interesting game.You can enjoy t…
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也就是 dp[j][k]代表当前链末端为j,其内部点包括边界数量为k的最小长度.这样最后得到的一定是最优的凸包. 然后就是要注意要dp[j][k]的值不能超过L,每跑一次凸包,求个最大的点数量就好了. 和DP结合的计算几何题,主要考虑DP怎么搞 /** @Date : 2017-09-27 17:27…
B - Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1069 Appoint description: Description A group of researchers are designing an experiment to test the IQ of a monkey. They wi…
G - FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1160 Appoint description: Description FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define REP(i, a, b) for (int i = (a); i < (b); ++i)…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2861 题目大意:n个位置,m个人,分成k段,统计分法.S(n)=∑nk=0CknFibonacci(k) 解题思路: 感觉是无聊YY出的DP,数据目测都卡了几W组.如果不一次打完,那么直接T.$DP[i][j][k][0|1]$ 用$DP[i][j][k][0|1]$表示,$i$位置,已经安排了$j$个人,有$k$段,且$i$位置不放人/放人. 边界 $DP[0][0][0][0]=DP[0][0]…
Reference: http://blog.csdn.net/me4546/article/details/6333225 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2838 题目大意:每头牛有个愤怒值,每次交换相邻两个数进行升序排序,$cost=val_{1}+val_{2}$,求$\min \sum cost_{i}$ 解题思路: 按输入顺序DP: 第i的值val的最小cost=当前数的逆序数个数*val+当前数的逆序数和 相当于每次只…
hdu 5791 Two Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1421    Accepted Submission(s): 630 Problem Description Alice gets two sequences A and B. A easy problem comes. How many pair of sequ…
H - Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1087 Appoint description:  System Crawler  (2015-11-18) Description Nowadays, a kind of chess game called “Su…
题意:容易理解... 分析:对于每个单位矩阵,我们先求出连续比它高的最左边的下标假设为l,然后求出比它高的最右边的下标假设为r,然后矩阵的面积就是(r-l+1)*1:我们从左到 右扫一遍,求出每个点的l保存在l[]数组里,然后从右到左扫一遍,求出每个点的r保存在r[]数组里,最后可以求出最大的矩阵了. 然后做完这个题可以做下这道题的加强版--hdu 1505 我的博客链接:http://www.cnblogs.com/jiangjing/p/3221442.html 代码实现: #include…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4293 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; int G[maxn][maxn]; int dp[maxn]; //dp[i]表示前i个人,最大有多少个人没撒谎. int main() { //freopen(…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意是有一个矩阵,从左上角走到右下角,每次能向右或者向下,把经过的数字记下来,找出一条路径是这些数的方差最小. Find a path Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 961    Accepted Submissi…
Bone Collector II Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3471    Accepted Submission(s): 1792 Problem Description The title of this problem is familiar,isn't it?yeah,if you had took par…
HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行,竖用几行.然后相乘累加起来就是答案 代码: #include <stdio.h> #include <string.h> #include <iostream> using namespace std; typedef long long ll; const ll MOD = 9999991; const int N = 1005; int t, n, m, k, x, y; ll dp1…
http://acm.hdu.edu.cn/showproblem.php? pid=4472 第一个本能的找规律.第二直觉 树被分成的子树,然后,复发或DP 然后发现不.然后,他们发现,他们并没有阅读题,.., dp[i]=segma(dp[j] | (i-1)%j==0) #include <cstdio> #include <cstring> #include <cstring> const int MAXN = 1000+50; const int MOD =…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555 题意: 给出一个正整数N,求出1~N中含有数字“49”的数的个数 思路: 采用数位dp的状态转移方程法解 具体如下: dp[len][state];  dp数组的第一位代表数字的位数,第二位代表状态 状态设定: dp[i][0] : i 位数字中不含数字49的数的个数 dp[i][1] : i 位数字中不含数字49,但高位是9的数的个数 dp[i][0] : i 位数字中含有数字49的数的个数 状…
题目无法正常粘贴,地址:http://acm.hdu.edu.cn/showproblem.php?pid=5303 大意是给出一个环形公路,和它的长度,给出若干颗果树的位置以及树上的果子个数. 起点为0,背包大小为K,求最小走多少距离能摘完所有的果子并回到起点. 观察得知,公路长度L虽然上界10^9,但果子总和最多10^5,还是可做的. 显然如果想回家时在左半边肯定逆时针返回更近,在右边同理顺时针更近. 所有取果子的操作无非三种情况(顺时针出发逆时针返回&&逆时针出发顺时针返回&…
http://acm.hdu.edu.cn/showproblem.php?pid=2084 状态转移方程: dp[i][j] = MAX(dp[i+1][j],dp[i+1][j+1])+tower[i][j] #include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #…
强行卡内存 这题在CF上好像有道极相似的题 可以想到状态设计为dp[f][i][k]表示f在取完i-1时,此时可以取k个或k+1个的状态下的最大值.之前以为n是1e5,自己想不到怎么设计状态真的辣鸡,把题目扔给队友写,实际上n是1e4,k就算不断递增最大也只有200左右,实际上是开的下的. 由于最终局面下的最优决策是固定的,所以从后往前转移. 但是人家说本来题目就too simple了,觉得你这样申请空间还是太naive,会给你MLE. 可以注意到状态i只由i+k+1或i+k转移,k范围是200…
Employment Planning Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1158 Description A project manager wants to determine the number of the workers needed in every month. He does know the minima…
Piggy-Bank Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1114 Description Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income fo…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 思路:n这么大,可以采用滚动数组,然后就是求原串和反串的LCS了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ][]; ],str2[]; int n; int main() { while(~scanf(&q…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3905 思路:dp[i][j]表示前i分钟,睡了j分钟收获的的最大价值,并记tmp_dp[i][j]为从i开始前的连续L分钟都是醒着的,并且睡了j分钟所能得到的最大价值,于是状态转移方程可以表示为: 第 i 分钟睡dp[i][j]=dp[i-1][j-1]; 第 i 分钟醒着 dp[i][j]=max{dp[i][j],tmp_dp[i][j]} 而tmp_dp[i][j]的转移方程为tmp_dp[i…
模板http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html 完全理解以后,我发现这种写法实在是太厉害了,简洁,优美,可以回避很多细节问题,而这些细节如果用递推的方法写,处理起来可能会非常痛苦 http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 http://www.cnblogs.com/xiaohongmao/p/3473599.html 前几天写过这道题的解题报告,两种解法…
Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 507    Accepted Submission(s): 284 Problem Description There is a number sequence A1,A2....An ,A1,A2....An ,A1,A2....An ,A1,A2....An ,A1,A2..…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2476 题目大意: 给出两个等长的串S, T, 要将S变成T, 每次可以把S的连续的一段变成相同的字母,求最少操作数. 这题网上看了好多题解,理解了好久, 记录一下我的理解吧. 首先求出把空串变成T的最少次数. dp[i][j] 表示把空串变成T[i ... j]的最少次数. 首先dp[i][j] = dp[i + 1][j]. 然后有一个性质.如果两次染色的区间有交, 那么小的区间一定完全包含于大…
http://acm.hdu.edu.cn/showproblem.php?pid=2084 #include "iostream" #include "cstdio" #include "algorithm" using namespace std; ][],dp[][]; void DP(int n) { ;i<n;i++) dp[n-][i]=m[n-][i]; ;i>=;i--) ;j<=i;j++) dp[i][j]=…
传送门: ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=108 HDU :http://acm.hdu.edu.cn/showproblem.php?pid=1160 题目大意: 输入好多组w 和 s 代表老鼠的重量和速度,要求找出满足 w 严格 升序, s严格降序的最大长度和他们的序号. 我是先排序,然后和ZOJ 1136 Longest Ordered Subsequence (http://blog.csdn.…
http://acm.hdu.edu.cn/showproblem.php?pid=6495 题意 有n个挑战(1e3),假如接受,在挑战之前体力x会变成min(x,\(b[i]\)),然后会减去a[i],无论是否接受这个挑战,体力在结束后都会增加\(c[i]\),问最多能完成多少个挑战 题解 定义\(dp[i][j]\)为前i个挑战接受了j个后剩下的最大体力 接受:\(min(dp[i-1][j-1],b[i])-a[i]+c[i]\); 不接受:\(dp[i-1][j]+c[i]\) 体力小…