zoukankan      html  css  js  c++  java
  • 「线性基」[BJWC2011]元素

    [BJWC2011]元素

    原题链接:BJWC2011元素

    题目大意

    给你N组数,每组数由两个数组成,分别是x, y,现在要让你求在一部分x异或之后的得到的结果不为0的情况下,y的和的最大值

    题目题解

    线性基裸题,如果不会线性基建议在线性基 了解一下,我们只要先对y排序,然后一个一个的塞进线性基里面就可以了,然后每次如果当前数可以塞的话就答案++,如果不行就看下一个

    代码如下

    //#define fre yes
    
    #include <cstdio>
    #include <algorithm>
    
    const int N = 1005;
    long long d[N];
    struct message {
        long long num;
        long long t;
    } arr[N];
    
    bool cmp(message x, message y) {
        return x.t > y.t;
    }
    
    long long ans = 0;
    inline void add(long long x, long long t) {
        for (int i = 62; i >= 0; i--) {
            if(x & (1ll << i)) {
                if(d[i]) x ^= d[i];
                else {
                    ans += t;
                    d[i] = x;
                    break;
                }
            }
        }
    }
    
    int main() {
        static int n;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) {
            scanf("%lld %lld", &arr[i].num, &arr[i].t);
        } std::sort(arr + 1, arr + 1 + n, cmp);
        for (int i = 1; i <= n; i++) {
            add(arr[i].num, arr[i].t);
        } printf("%lld
    ", ans);
        return 0;
    }
    
  • 相关阅读:
    用ruby抓取网页
    [转] 从项目管理角度看敏捷开发
    ruby学习笔记(9)
    [转] 从项目管理角度看敏捷开发
    ruby学习笔记(8)
    ruby学习笔记(7)
    [转] 什么是敏捷开发
    netbeans tomcat
    maven
    jersey
  • 原文地址:https://www.cnblogs.com/Nicoppa/p/11679640.html
Copyright © 2011-2022 走看看