样例全过但大红大紫
查看原帖
样例全过但大红大紫
914531
W2009y12n21楼主2024/11/24 20:42
#include<iostream>
using namespace std;
int a[10010];
int dp[10010];
int sum[10010];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sum[1]=a[1];
	dp[1]=a[1];
	cout<<sum[1]<<" ";
	for(int i=2;i<=n;i++)//以i为结尾的LIS 
	{
		int cnt;
		for(int j=i-1;j>=1;j--)
		{
			if(a[i]>=a[j])
			{
				dp[i]=max(dp[i],dp[j]+1);
				if(dp[j]+1==dp[i])
				{
					cnt=j;
				}
			}
			else
			{
				dp[i]=max(dp[i-1],dp[i]);
//				cout<<i<<":"<<j<<'\n';
			}
		}
		sum[i]=sum[cnt]+a[i];
		cout<<sum[i]<<" ";
	}
//	cout<<'\n';
//	for(int i=1;i<=n;i++)
//	{
//		cout<<dp[i]<<" ";
//	 } 
}
2024/11/24 20:42
加载中...