[Codeforces947D]Riverside Curio(思维)
生活随笔
收集整理的這篇文章主要介紹了
[Codeforces947D]Riverside Curio(思维)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
題目鏈接
Solution
設S[i]表示到第i天總共S[i]幾個標記,
那么滿足S[i]=m[i]+d[i]+1
m[i]表示水位上的標記數,d[i]表示水位下的標記數
那么可以發現,S[i]滿足非嚴格遞增,且相鄰2個相差不超過1
由此可轉化題目,
給你n個數,可以給任意數加上任意正整數,要求使得最后使這個數列滿足S[i]的條件
問最少加多少,這樣就簡單了
注意開long long
Code
#include<cstdio>int n,A[100010]; long long Ans;int main() {scanf("%d",&n);for(int i=1;i<=n;++i) {scanf("%d",&A[i]);if(A[i]<A[i-1]) Ans+=A[i-1]-A[i],A[i]=A[i-1];}for(int i=n;i>=2;--i) if(A[i]-A[i-1]>1) Ans+=A[i]-A[i-1]-1,A[i-1]=A[i]-1;printf("%I64d\n",Ans);return 0; }轉載于:https://www.cnblogs.com/void-f/p/8653208.html
總結
以上是生活随笔為你收集整理的[Codeforces947D]Riverside Curio(思维)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 萌新的linux之旅16
- 下一篇: Arista Networks推出400