• [BJWC2011] 元素


    Description

    (n) 个元素,每个元素有个序号和一个值,一个元素可以选择当且尽当其序号与已选元素序号的异或和不为 (0),求你可选择的元素值和的最大值。

    Solution

    容易发现,要求的就是值和最大的(序号)线性无关组

    考虑贪心,将值大的放在前面,然后能放入线性基就放入线性基即可

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 10005;
    
    struct linearbase {
        int a[64];
        bool insert(int k) {
            for(int j=63; j>=0; --j)
                if((k>>j)&1ll)
                    if(a[j]==0) {a[j]=k;return true;}
                    else k^=a[j];
            return false;
        }
    } l;
    
    int n;
    
    struct ks {
        int x,y;
        bool operator < (const ks &b) {
            return y>b.y;
        }
    } a[N];
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n;
        for(int i=1;i<=n;i++) {
            int x,y;
            cin>>x>>y;
            a[i]={x,y};
        }
        int ans=0;
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++) {
            if(l.insert(a[i].x)) ans+=a[i].y;
        }
        cout<<ans;
    }
    
    
  • 相关阅读:
    eclipse无法启动问题记录
    java环境配置
    Tomcat配置,Myeclipse破解和各种设置
    Android_Service详解及实例
    WTF
    jQuery实现图片轮播
    jQuery实现皮肤自定义
    CSS中的transform与transition
    checkbox实现全选/全不选
    ng-if可见
  • 原文地址:https://www.cnblogs.com/mollnn/p/13151723.html
Copyright © 2020-2023  润新知