HDU 1087 Super Jumping! Jumping! Jumping! DP
数据结构的作业终于开始能让我感觉恶心了:)
题目是先给定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)); } }
新 blog : www.hrwhisper.me