zoukankan      html  css  js  c++  java
  • BZOJ2460: [BeiJing2011]元素

    首先考虑一个xor为0的子集,如果去掉一个元素,那么xor就不等于0了,从而符合题意

    去掉的元素肯定最小,或者说保留的元素最大,就可以使得ans最大

    所以用贪心,从大到小取,用线性基维护一下即可,这是基于xor特殊性质的贪心

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<vector>
     6 #define MAXN 1000+10
     7 #define ll long long
     8 #define pb push_back
     9 #define ft first
    10 #define sc second
    11 using namespace std;
    12 ll s[65];
    13 int n;
    14 pair<ll,int> a[MAXN];
    15 bool check(ll t){
    16     if(!t)return 0;
    17     for(int i=63;i>=0;i--){
    18         if((t>>i)&1){
    19             t^=s[i];
    20         }
    21     }
    22     return (t==0);
    23 }
    24 void ins(ll t){
    25     for(int i=63;i>=0;i--){
    26         if((t>>i)&1){
    27             if(s[i]){
    28                 t^=s[i];
    29             }
    30             else{
    31                 s[i]=t;
    32                 break;
    33             }
    34         }
    35     }
    36 }
    37 bool comp(const pair<ll,int> &A,const pair<ll,int> &B){
    38     return (A.sc>B.sc);
    39 }
    40 int main()
    41 {
    42     scanf("%d",&n);
    43     for(int i=1;i<=n;i++)scanf("%lld%d",&a[i].ft,&a[i].sc);
    44     sort(a+1,a+n+1,comp);
    45     int ans=0;
    46     for(int i=1;i<=n;i++){
    47         if(!check(a[i].ft)){
    48             ans+=a[i].sc;
    49             ins(a[i].ft);
    50         }
    51     }
    52     printf("%d
    ",ans);
    53     return 0;
    54 }
  • 相关阅读:
    Linux_WEB访问控制示例(使用IPADDR类型)
    基于多IP地址Web服务
    基于多端口的Web服务
    基于多主机的Web服务
    Linux_WEB服务基础概念
    Linux_配置认证访问FTP服务
    Linux_配置匿名访问FTP服务
    Linux_部署日志服务器
    Linux_日志管理理论概述
    微信小程序 radio 单选框
  • 原文地址:https://www.cnblogs.com/w-h-h/p/8309485.html
Copyright © 2011-2022 走看看