zoukankan      html  css  js  c++  java
  • 17-09-10四校联考

    T1:从高到低依次确定答案的每一位,如果每个区间的第i位都可以选1,那么全部选1,答案的这一位就是1。

    如果该区间这一位能够选择0或1,那么将区间缩小为2i至ri

    如果不是所有区间都能选1,答案的这一位是0。

    如果该区间这一位能够选择0或1,则该区间选0,并将所有比这一位低的位的值全部赋为1。时间复杂度O(n log 1018)。

    Code:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define ll long long
     5 #define Lg 60
     6 #define MN 100005
     7 using namespace std;
     8 inline ll in(){
     9     ll x=0;bool f=0; char c;
    10     for (;(c=getchar())<'0'||c>'9';f=c=='-');
    11     for (x=c-'0';(c=getchar())>='0'&&c<='9';x=(x<<3)+(x<<1)+c-'0');
    12     return f?-x:x;
    13 }
    14 ll l[MN],r[MN],n,ans;
    15 int main()
    16 {
    17     n=in();for (int i=1;i<=n;++i) l[i]=in(),r[i]=in();
    18     for (int i=Lg;i>=0;--i){
    19         bool f=0;for (int j=1;j<=n;++j)
    20         if (!(r[j]&(1ll<<i))) {f=1;break;}
    21         if (!f){
    22             ans+=(1ll<<i);for (int j=1;j<=n;++j)
    23             if (!(l[j]&(1ll<<i))) l[j]=0;
    24         }else for (int j=1;j<=n;++j)
    25         if ((l[j]&(1ll<<i))!=(r[j]&(1ll<<i))) r[j]=(1ll<<Lg)-1;
    26     }printf("%lld",ans);return 0;
    27 }
  • 相关阅读:
    js 正则表达式
    JAVA jdk环境搭建
    VMWareStation10 密钥
    linux xshell jdk hadoop(环境搭建) 虚拟机 安装(大数据搭建环境)
    linux hadoop jdk虚拟机下配置
    Linux shell基础(四)
    Linux shell基础(二)
    Linux shell基础(三)
    Linux shell基础(一)
    html
  • 原文地址:https://www.cnblogs.com/codingutopia/p/union170910.html
Copyright © 2011-2022 走看看