[2019.1.2]BZOJ2460 [BeiJing2011]元素
阿新 • • 發佈:2019-03-17
del 什麽是 amp 1.2 ++ esp 不知道 如何判斷 i++
考慮貪心地從魔力值大到小加入礦石,合法就加入。
為什麽是對的我也不知道233
那麽如何判斷合法呢?
其實考慮是否可以讓它在異或一些數時候變為0即可。
線性基維護。
code:
#include<bits/stdc++.h> using namespace std; struct stone{ int m; long long id; }s[1010]; int n,ans; long long p[65]; bool cmp(stone x,stone y){ return x.m>y.m; } bool Push(long long x){ for(int i=63;i>=0;i--){ if(x&(1ll<<i)){ if(!p[i])return p[i]=x,true; x^=p[i]; } } return false; } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%lld%d",&s[i].id,&s[i].m); sort(s+1,s+n+1,cmp); for(int i=1;i<=n;i++){ if(Push(s[i].id))ans+=s[i].m; } printf("%d",ans); return 0; }
[2019.1.2]BZOJ2460 [BeiJing2011]元素