题目链接:题目
大意:
把题目的操作翻译一下就是拿一个数去减后面的一个数,然后前面这个数会消掉。最小化最后剩下的数。
思路:
容易看出,最后剩下的一定是最后一个数,因为最后一个数一定不会被消去,又已知最后只剩下一个数,那么就是最后一个数。
前面的所有数都要被消去,最差的情况就是全部减到最后一个数上,而每用前面的一个数减到除最后一个数外的另一个数上,那么就相当于加在最后一个数上,我们可以全部减到倒数第二个数上,再减到最后一个数上。相当于最后一个数减倒数第二个数,再加上其他所有数。
代码:
#include <bits/stdc++.h>
using namespace std;#define int long long
#define MOD 1000000007
#define fi first
#define se second
#define pii pair<int,int>
#define vec vectorvoid solve(){int n;cin >> n;vec<int> a(n);for(int i = 0; i < n; i++){cin >> a[i];}int ans = 0;ans = a[n - 1];ans -= a[n - 2];for(int i = 0; i < n - 2; i++){ans += a[i];}cout << ans << '\n';
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t=1;cin >> t;while(t--){solve();}return 0;
}