Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)

    xiaoxiao2022-07-08  185

    题解:

    题目大意是说b[i]=a[i]+a[n-i]的值,并且要保证是递增的,我们可以想,让左边的尽可能小,并且比右边的小,我们就可以去他左边的和右边较小的最大值即可,需要注意的是数据范围是 long long int型的

    代码:

    #include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int n ; cin >> n; ll k ; ll a[200005]; for(int i = 0 ;i < t /2 ;i++){ cin >> k; if(t == 0){ a[0] = 0; a[n-1] = k; } else { //满足非降序,肯定a[i] >= a[i-1] a[i] = max(a[i-1],min(a[n-i],k-a[n-i])); a[n-i-1] = k-a[i]; } } for(int i = 0; i < n ;i ++){ cout << a[i] << " "; } return 0; }
    最新回复(0)