题解
2024-12-09 21:21:58
发布于:广东
3阅读
0回复
0点赞
按极限取值,如果 为 那么 就为 ,否则 为 ,
如果和还有剩余就全加在 中一个为 的元素上.
注意判断特殊情况, 时是得不出来的
#include <iostream>
#include <cstdio>
#define int long long
using namespace std;
int a[100005];
void solve(){
int n;
cin >> n;
int ct = 0;
for(int i = 1; i <= n; i++){
cin >> a[i], ct += a[i];
}
if(n == 1){//特判
cout << ":-(\n";
return;
}
for(int i = 1; i <= n; i++){
ct -= (a[i] == 1 ? 2 : 1);//贪心
}
cout << (ct < 0 ? ":-(\n" : "^_^\n");//如果大于0就全加2上
}
signed main(){
cin.tie(nullptr) -> sync_with_stdio(0);
cout.tie(nullptr) -> sync_with_stdio(0);
int t;
cin >> t;
while(t--) solve();
return 0;
}
这里空空如也
有帮助,赞一个