标签:无限 top struct tps 有一个 数组 vector amp 维护
给定n个数,初始有n个1,每次选择一个数,替换为所有数的和,可以无限次操作,问能否得到给定的数组。
code
class Solution {
public:
bool isPossible(vector<int>& target) {
int n=target.size();
if(n==1){
return target[0]==1;
}
long long sum=0;
priority_queue<int> q;
for(int i=0;i<n;i++){
q.push(target[i]);
sum+=target[i];
if(target[i]<1){
return false;
}
}
while(true){
int mx=q.top();
q.pop();
if(mx<=(sum-mx)){
return false;
}
int ts=mx/(sum-mx);
if(mx%(sum-mx)==0){
ts--;
}
// cout << ts << "\n";
int tmp=mx-ts*(sum-mx);
q.push(tmp);
sum-=(mx-tmp);
// cout << tmp <<" " << sum <<"\n";
if(sum==n){
return true;
}
}
return false;
}
};
标签:无限 top struct tps 有一个 数组 vector amp 维护
原文地址:https://www.cnblogs.com/zxcoder/p/12391411.html