题目链接:题目
大意:
把题目的操作翻译一下就是拿一个数去减后面的一个数,然后前面这个数会消掉。最小化最后剩下的数。
思路:
容易看出,最后剩下的一定是最后一个数,因为最后一个数一定不会被消去,又已知最后只剩下一个数,那么就是最后一个数。
前面的所有数都要被消去,最差的情况就是全部减到最后一个数上,而每用前面的一个数减到除最后一个数外的另一个数上,那么就相当于加在最后一个数上,我们可以全部减到倒数第二个数上,再减到最后一个数上。相当于最后一个数减倒数第二个数,再加上其他所有数。
代码:
#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 vector
void 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;
}
标签:973,int,最后,Codeforces,cin,数上,ans,Battle,define
From: https://blog.csdn.net/puzhaoyu/article/details/142423728