BZOJ2460 [BeiJing2011]元素 Solution

来源:互联网 发布:韩国限制电视直播软件 编辑:程序博客网 时间:2024/05/29 17:57

简单留一下纪念:同BZOJ3105.

可以参见我的博客这道题的解题报告。

Code:

#include <cstdio>#include <cstring>#include <climits>#include <algorithm>using namespace std; #define N 1010int n;long long a[N];int w[N], ins[64], sav[N], top; int main() {    scanf("%d", &n);         register int i, j, k;    for(i = 1; i <= n; ++i)        scanf("%lld%d", &a[i], &w[i]);    for(i = 1; i <= n; ++i)        for(j = i + 1; j <= n; ++j)            if (w[i] < w[j])                swap(w[i], w[j]), swap(a[i], a[j]);         int ans = 0;    for(i = 1; i <= n; ++i) {        for(j = 63; j >= 0; --j) {            if ((a[i] >> j) & 1) {                if (!ins[j]) {                    ins[j] = i;                    for(k = 1; k <= top; ++k)                        if ((a[sav[k]] >> j) & 1)                            a[sav[k]] ^= a[i];                    sav[++top] = i;                    break;                }                else                    a[i] ^= a[ins[j]];            }        }        if (a[i])            ans += w[i];    }         printf("%d", ans);         return 0;}


0 0
原创粉丝点击