思想都在我的这篇博客里面。
呃,那道题懂差不多之后随便水水这道题就过了。
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 1010 using namespace std; struct KSD { long long a; int b; bool operator < (const KSD &d)const{return b==d.b?a>d.a:b>d.b;} }x[N]; long long ins[70]; int ans,n; int main() { int i,j,k; scanf("%d",&n); for(i=1;i<=n;i++)scanf("%lld%d",&x[i].a,&x[i].b); sort(x+1,x+n+1); for(i=1;i<=n;i++) { for(j=65;j>=0;j--) { if((x[i].a>>j)&1) { if(!ins[j]) { ins[j]=x[i].a; break; } else x[i].a^=ins[j]; } } if(x[i].a)ans+=x[i].b; } printf("%d\n",ans); return 0; }
时间: 2024-10-22 00:32:10