题目要求abiimodpi=0,也就是ai的每个素因子个数的bi倍都大于等于pi相应的因子个数。其实我们可以让ai只有一个素因子,比如说2,也就是如果存在解,那么一定存在ai均为2的整数幂的解。
设
我们得到一组不等式,对于所有的i有
当bi各不相等时,上式可以取等号,否则不能取等号。若满足了上式条件,一定能构造出解。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const double eps = 1e-10;
class DivisibleSetDiv1{
public:
string isPossible(vector<int> b){
sort(b.begin(),b.end());
const int n = b.size();
double sum = 0;
for(int i=0;i<n;i++){
sum += 1.0/(b[i]+1);
}
if(sum > 1.0 + eps){
return "Impossible";
}else if(sum > 1.0 - eps){
for(int i=0;i<n-1;i++){
if(b[i] == b[i+1]){
return "Impossible";
}
}
}
return "Possible";
}
};
226



被折叠的 条评论
为什么被折叠?



