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 }