description
有 n 種數字,第 i 種數字是 ai、有 bi 個,權值是 ci。
若兩個數字 ai、aj 滿足,ai 是 aj 的倍數,且 ai/aj 是乙個質數,
那麼這兩個數字可以配對,並獲得 ci×cj 的價值。
乙個數字只能參與一次配對,可以不參與配對。
在獲得的價值總和不小於 0 的前提下,求最多進行多少次配對。
全程%werkeytom_ftd,這個價值總和不小於0比較難搞,看完題解後發現是可以用類似貪心的方法來搞的,就是一直跑,跑到不能跑為止,當然二分答案之後再check也是可以的,慢一點。
#include
using
namespace
std;
#define ll long long
#define pa pair
const ll maxn=410;
const ll inf=2147483647;
ll read()
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return x*f;
}ll n,a[maxn],b[maxn],c[maxn],f[maxn];
bool check(ll x,ll y)
ll getf(ll x)
if(x>1)re++;
return re;
}ll st,ed;
struct edgee[maxn*maxn*2];
ll last[maxn],len=1;
void ins(ll x,ll y,ll d,ll c)
void addedge(ll x,ll y,ll d,ll c)
ll dis[maxn];bool in[maxn];ll pre[maxn];
bool spfa()}}
return(dis[ed]!=-4485090715960753727ll);
}int main()
ll ans=0,v=0;
while(spfa())
if(v+mn*dis[ed]>=0)
}else
}printf("%lld",ans);
}
4514 Sdoi2016 數字配對
有 n 種數字,第 i 種數字是 ai 有 bi 個,權值是 ci。若兩個數字 ai aj 滿足,ai 是 aj 的倍數,且 ai aj 是乙個質數,那麼這兩個數字可以配對,並獲得 ci cj 的價值。乙個數字只能參與一次配對,可以不參與配對。在獲得的價值總和不小於 0 的前提下,求最多進行多少次配...
bzoj4514 Sdoi2016 數字配對
有 n 種數字,第 i 種數字是 ai 有 bi 個,權值是 ci。若兩個數字 ai aj 滿足,ai 是 aj 的倍數,且 ai aj 是乙個質數,那麼這兩個數字可以配對,並獲得 ci cj 的價值。乙個數字只能參與一次配對,可以不參與配對。在獲得的價值總和不小於 0 的前提下,求最多進行多少次配...
bzoj4514 Sdoi2016 數字配對
bzoj4514 sdoi2016 數字配對 題意 有 n 種數字,第 i 種數字是 ai 有 bi 個,權值是 ci。若兩個數字 ai aj 滿足ai 是 aj 的倍數且 ai aj 是乙個質數,那麼這兩個數字可以配對,並獲得 ci cj 的價值。乙個數字只能參與一次配對,可以不參與配對。在獲得的...