AKSZ-dp
2024-06-16 17:31:04
发布于:广东
AKSZ-
步骤
划分步骤,确定状态,确定转移方程
题
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,a[N],dp[N];
int ans=N*-1;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
if(dp[i-1]<0) dp[i]=a[i];
else dp[i]=a[i]+dp[i-1];
}
for(int i=1;i<=n;i++){
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,a[N],dp[N];
int ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
dp[i]=1;//你猜我为啥不用memset?
for(int j=1;j<i;j++){
if(a[j]<=a[i]){
dp[i]=max(dp[i],dp[j]+1);
}
}
}
for(int i=1;i<=n;i++){
ans=max(ans,dp[i]);
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个