CF-1155 D.Beautiful Array

2211 단어
제목 대의: 현재 수열이 하나 있고, 또 하나의 숫자 x가 있다. 너는 이 수열 중의 한 단락의 연속 서열을 동시에 이 숫자 x(물론 곱하지 않아도 된다)를 곱한 다음에 너에게 최대 자단과 얼마인지 물어볼 수 있다.
방법: dp
#include
#include
using namespace std;
long long dp[3],x,ans;
int n;
int main(){
    scanf("%d",&n);
    cin>>x;
    long long a;
    for(int i=1;i<=n;i++){
        cin>>a;
        dp[0]=max(0LL,dp[0]+a);
        dp[1]=max(dp[0],dp[1]+x*a);
        dp[2]=max(dp[1],dp[2]+a);
        ans=max(ans,dp[2]);
    }
    cout<endl;
    return 0;
}

좋은 웹페이지 즐겨찾기