洛谷 p3078 (差分,贪心)

题目大意:

每次可以对区间[l,r]减1,问我们最少经过多少次操作可以把数列an全变为0.

解题思路:

一开始想用二分加线段树,发现线段树不会写。丢人  

其实我们只用考虑相邻元素之间的差就可以了,因为假如本个元素比上一个小,那么其实这个元素要减的话,上一个元素已经帮你减掉了。假如本个元素比较大,对答案的贡献就是a[i]-a[i-1]

#include 
#define int long long
using namespace std;
int32_t main(){
    int n;cin>>n;
    int x=0;
    int ans=0;
    for(int i=0;i>t;
        if(t>x)ans+=(t-x);
        x=t;
    }
    cout<

 

你可能感兴趣的:(洛谷,贪心,差分)