zoukankan      html  css  js  c++  java
  • 2016年中国大学生程序设计竞赛(合肥)-重现赛1009 HDU 5969

    最大的位或

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 18    Accepted Submission(s): 17


    Problem Description
    B君和G君聊天的时候想到了如下的问题。
    给定自然数l和r ,选取2个整数x,y满足l <= x <= y <= r ,使得x|y最大。
    其中|表示按位或,即C、 C++、 Java中的|运算。
     
    Input
    包含至多10001组测试数据。
    第一行有一个正整数,表示数据的组数。
    接下来每一行表示一组数据,包含两个整数l,r。
    保证 0 <= l <= r <= 1018
     
    Output
    对于每组数据输出一行,表示最大的位或。
     
    Sample Input
    5
    1 10
    0 1
    1023 1024
    233 322
    1000000000000000000
    1000000000000000000
     
    Sample Output
    15
    1
    2047
    511
    1000000000000000000
     
    Source
    题意:中文题面
    题解:被选择的两个数中,其中的一个数一定是区间的上界,寻找另一个数 初始全部为1 从高位到低位模拟。
      1 #include<iostream>
      2 #include<cstdio>
      3 #define ll __int64
      4 using namespace std;
      5 ll l,r;
      6 int t;
      7 int s1[70];
      8 int s2[70];
      9 int s3[70];
     10 int len=0;
     11 int len1=0;
     12 bool cmp1( int * ss,int *tt)
     13 {
     14     for(int i=len-1; i>=0; i--)
     15     {
     16         if(ss[i]==tt[i])
     17             continue;
     18         if(ss[i]>tt[i])
     19             return true;
     20         if(ss[i]<tt[i])
     21             return false;
     22     }
     23     return true;
     24 }
     25 bool cmp2( int * ss,int *tt)
     26 {
     27     for(int i=len-1; i>=0; i--)
     28     {
     29         if(ss[i]==tt[i])
     30             continue;
     31         if(ss[i]>tt[i])
     32             return false;
     33         if(ss[i]<tt[i])
     34             return true;
     35     }
     36     return true;
     37 }
     38 void ans()
     39 {
     40     for(int i=len-1; i>=0; i--)
     41     {
     42         if(s2[i]==1||s1[i]==1)
     43             s1[i]=1;
     44     }
     45     ll exm=1;
     46     ll re=0;
     47     for(int i=0; i<=len-1; i++)
     48     {
     49         if(s1[i])
     50             re+=exm;
     51         exm*=2;
     52     }
     53     cout<<re<<endl;
     54 }
     55 int main()
     56 {
     57     scanf("%d",&t);
     58     for(int i=1; i<=t; i++)
     59     {
     60         int flag=0;
     61         len=0;
     62         len1=0;
     63         scanf("%I64d %I64d",&l,&r);
     64         ll zha=r;
     65         while(r>0)
     66         {
     67             if(r&1)
     68                 s1[len++]=1;
     69             else
     70                 s1[len++]=0;
     71             r>>=1;
     72         }
     73         for(int j=0; j<len; j++)
     74         {
     75             s2[j]=1;
     76             s3[j]=0;
     77         }
     78         while(l>0)
     79         {
     80             if(l&1)
     81                 s3[len1++]=1;
     82             else
     83                 s3[len1++]=0;
     84             l>>=1;
     85         }
     86         for(int j=len-1; j>=0; j--)
     87         {
     88             if(s1[j]==1)
     89                 continue;
     90             if(s1[j]==0)
     91             {
     92                 s2[j+1]=0;
     93                 if(cmp1(s2,s3)&&cmp2(s2,s1))
     94                 {
     95                     ans();
     96                     flag=1;
     97                     break;
     98                 }
     99                 else
    100                 {
    101                     s2[j+1]=s1[j+1];
    102                     s2[j]=s1[j];
    103                 }
    104             }
    105         }
    106         if(flag==0)
    107             cout<<zha<<endl;
    108     }
    109     return 0;
    110 }
     
  • 相关阅读:
    Flutter 使用Navigator进行局部跳转页面
    Flutter “孔雀开屏”的动画效果
    ORA-04063: package body "DBSNMP.BSLN" has errors
    ORA-04063: package body "DBSNMP.BSLN_INTERNAL" has errors
    Oracle 11gR2 待定的统计信息(Pending Statistic)
    Oracle查询dba_extents视图很慢
    Oracle查询表空间使用率很慢
    Oracle收集对表收集统计信息导致全表扫描直接路径读?
    Oracle IO性能测试
    Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name"
  • 原文地址:https://www.cnblogs.com/hsd-/p/6033660.html
Copyright © 2011-2022 走看看