zoukankan      html  css  js  c++  java
  • BZOJ 5108: [CodePlus2017]可做题 贪心

    code: 

    #include <cstdio>  
    #include <cstring>
    #include <algorithm> 
    #define N 100020  
    #define ll long long 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;
    struct data 
    {
        int p,v; 
        bool operator<(data a) const { return p<a.p; } 
    }a[N];  
    int s[N],cnt[31],tot; 
    int main() 
    { 
        // setIO("input"); 
        int n,m,i,j,c;    
        ll ans=0; 
        scanf("%d%d",&n,&m);  
        for(i=1;i<=m;++i) scanf("%d%d",&a[i].p,&a[i].v);   
        sort(a+1,a+1+m); 
        for(c=1;c<=m;++c) 
        {
            tot=1,s[1]=a[c].v;         
            while(c<m&&a[c+1].p-a[c].p==1) 
                ++tot,s[tot]=a[++c].v^s[tot-1];   
            if(!(c-tot)&&a[1].p==1) 
            {
                for(i=1;i<=tot;++i) ans+=s[i]; 
            }
            else
            {
                for(i=0;i<30;++i) 
                {
                    cnt[i]=0; 
                    for(j=1;j<=tot;++j) 
                    {
                        if(s[j]&(1<<i))   ++cnt[i]; 
                    }
                    ans+=(1ll<<i)*min(cnt[i],tot-cnt[i]+1);   
                }
            }
        }
        printf("%lld
    ",ans); 
        return 0; 
    }
    

      

  • 相关阅读:
    java中finally的使用
    String基本方法
    java文件读写常用方法
    java笔试面试(转载)
    单链表的反转
    单链表的冒泡排序
    Java快速教程
    Java快速教程
    后海日记(4)
    后海日记(3)
  • 原文地址:https://www.cnblogs.com/guangheli/p/12085352.html
Copyright © 2011-2022 走看看