Breezing(牛客)

题目:D-Breezing_牛客小白月赛53 (nowcoder.com)

        给了一组数B长度为n,找到一个序列A使其相邻两个数差的绝对值的和最大,第i个可以取1-Bi(搞了半天才读懂)

 

 

 1 #include<iostream>
 2 using namespace std;
 3 const int N=1e5+10;
 4 int dp[N][2];
 5 int a[N];
 6 int main()
 7 {
 8     int n;
 9     scanf("%d",&n);
10     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
11     for(int i=1;i<=n-1;i++)
12     {
13         dp[i][0]=max(dp[i-1][0],dp[i-1][1]+abs(a[i]-1));
14         dp[i][1]=max(dp[i-1][0]+abs(a[i+1]-1),dp[i-1][1]+abs(a[i+1]-a[i]));
15     }
16     cout<<max(dp[n-1][0],dp[n-1][1]); 
17     return 0;
18 }

 

posted @ 2022-07-15 10:19  Armored_bear  阅读(48)  评论(0)    收藏  举报