HDU 1087 Super Jumping! Jumping! Jumping! DP

来源:互联网 发布:西安java培训机构排名 编辑:程序博客网 时间:2024/04/25 07:31

数据结构的作业终于开始能让我感觉恶心了:)

题目是先给定n个数,然后之后有两种操作,插入一个数或者查询第k小的数。尼玛,划分树! 没做过呀!

一题那么水,另一题那么坑!!!每次都是抽两题,我每次都抽到两题中比较难的那题,QAQ

---------------------------------------感觉作业坑爹的分割线---------------------------------------

http://acm.hdu.edu.cn/showproblem.php?pid=1087

大意:给定n个数,求他们上升序列的最大和。

直接DP把。。

#include<cstdio>#include<algorithm>using namespace std;const int MAXN=1000+1;int a[MAXN],sum[MAXN];int main(){int n;while(scanf("%d",&n),n){for(int i=0;i<n;i++){scanf("%d",&a[i]);sum[i]=0;}for(int i=0;i<n;i++){int max_sum=a[i];for(int j=i-1;j>=0;j--){if(a[j] <  a[i])max_sum=max(max_sum,sum[j]+a[i]);}sum[i]+=max_sum;}printf("%d\n",*max_element(sum,sum+n));}}


原创粉丝点击