HDU ACM 1087Super Jumping! Jumping! Jumping!->DP(动态规划)

分析:简单DP,转移方程dp[j]=max{dp[i]}+a[j];(0<=i<j<n,a[i]<a[j])。

#include<iostream>
using namespace std;

__int64 dp[1001];
int a[1001];

int main()
{
	int i,n,j;
	__int64 max;

	while(cin>>n && n)
	{
		for(i=0;i<n;i++)
			cin>>a[i];

		max=0x7fffffffffffffff+1;
		for(i=0;i<n;i++)
		{
			dp[i]=a[i];
			max=max>dp[i]?max:dp[i];
			for(j=0;j<i;j++)
				if(a[i]>a[j])
					if(dp[i]<dp[j]+a[i])
					{
						dp[i]=dp[j]+a[i];
						max=max>dp[i]?max:dp[i];
					}
		}
		printf("%I64d\n",max);
	}
    return 0;
}
时间: 2024-10-12 22:29:40

HDU ACM 1087Super Jumping! Jumping! Jumping!->DP(动态规划)的相关文章

HDU ACM 4597 Play Game -&gt;区间DP+记忆化搜索

分析:两个人都足够聪明,因此每个阶段都拿最大的.dp[sa][ea][sb][eb]分别表示区间1的开始为sa,结束为ea,区间2的开始为sb,结束为eb时能拿到的最大值.之后分别从四个方向上拿,是个搜索的过程. [cpp] view plaincopyprint? #include<iostream> using namespace std; int dp[25][25][25][25];  //dp[sa][ea][sb][eb],分别表示区间1的开始,结束,区间2的开始,结束 int a

HDU ACM 4734 F(x)-&gt;数位DP入门练习题

分析:数位DP的入门联系题,通过该題对数位DP有感觉了:dp[len][presum]代表长度为len权值不大于presum的数.记忆化搜索提高效率,除边界(因为边界上算出来的答案在其它数中可能是不完整的)外记录dp[len][presum]的值,下次发现以前计算过就直接return:dfs(len, presum, fg)表示求长度为len,不超过pre的全部符合条件的值.fg是控制边界的. #include<iostream> using namespace std; int dp[11]

HDU ACM 4561 连续最大积-&gt;DP

分析:dp[i][0]表示到第i个数成绩为负时的最大积个数,dp[i][1]表示到第i个数成绩为正时的最大积个数. #include<iostream> using namespace std; #define N 10005 #define max(a,b) ((a)>(b)?(a):(b)) int dp[N][2]; int main() { int T,t,i,n,sum,x; t=1; scanf("%d",&T); while(T--) { sca

HDU ACM 1074 Doing Homework-&gt;状态压缩DP(集合上的DP)

分析:n种家庭作业,全部做完有n!种顺序,但是n!太大了,而且对于作业1,2,3和1,3,2和2,1,3和3,2,1和3,1,2的顺序来说完成它们消耗的天数是一样的,只是顺序不同从而扣分不同,所以可将完成相同的作业的所有状态压缩成一种状态并记录扣的最少分即可 . 状态压缩DP采用二制进的思想,1, 0代表完成否,如:3的二进制为11, 代表完成了一,二科目的状态, 101代表完成了一.三科目的状态.这样,可从0->(1 << N)来获取所有状态,,进行适当的状态转移,对于该題D[s]代表

[ACM] hdu 4248 A Famous Stone Collector (DP+组合)

A Famous Stone Collector Problem Description Mr. B loves to play with colorful stones. There are n colors of stones in his collection. Two stones with the same color are indistinguishable. Mr. B would like to select some stones and arrange them in li

(转)dp动态规划分类详解

dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. ****************************************************************************************** 动态规划(英语:Dynamic programm

HDU 4026 Unlock the Cell Phone(动态规划)

Unlock the Cell Phone Problem Description Modern high-tech cell phones use unlock patterns to unlock the system. The pattern is usually a 3*3 dot array. By moving your finger over there dots, you can generate your personal unlock pattern. More specif

HDU 1024 Max Sum Plus Plus --- dp+滚动数组

HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值,其中第i个子序列包括a[j], 则max(dp[m][k]),m<=k<=n 即为所求的结果 <2>初始状态: dp[i][0] = 0, dp[0][j] = 0; <3>状态转移: 决策:a[j]自己成为一个子段,还是接在前面一个子段的后面 方程: a[j]直接接在前面

hdu 2089 不要62 (数位dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 思路:用变量记录吉利数,和最高位为2的吉利数还有不是吉利数的个数... code: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int dp[10][3]; //dp[i][j] ,i表示位数,j表示状态<pre name="code"