BZOJ2460: [BeiJing2011]元素

xiaoxiao2021-02-28  43

线性基

题目传送门

简单的线性基应用。

把所有矿石按照法力大小sort一下,然后根据元素序号搞线性基就好了。

代码:

#include<cstdio> #include<cstring> #include<algorithm> #define N 1005 using namespace std; typedef long long LL; struct nd{ LL x,id; }a[N]; int n,ans; LL p[65]; bool cmp(nd a,nd b){ return a.x>b.x; } int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%lld%lld",&a[i].id,&a[i].x); sort(a+1,a+n+1,cmp); for (int i=1;i<=n;i++){ for (int j=64;~j;j--) if ((a[i].id>>j)&1) if (!p[j]) { p[j]=a[i].id; break; } else a[i].id^=p[j]; if (a[i].id) ans+=a[i].x; } return printf("%d\n",ans),0; }
转载请注明原文地址: https://www.6miu.com/read-2622553.html

最新回复(0)