zoukankan      html  css  js  c++  java
  • Codeforces Round #618 (Div. 2)

    A

    题意:

    数组和and积为不能为0

    思路:

    不能出现0,以及和不能是0

    所有最后就是零的个数,如果零的个数+数组和==0的情况需要再加一

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define il inline
     5 #define it register int
     6 #define inf 0x3f3f3f3f
     7 #define lowbit(x) (x)&(-x)
     8 #define mem(a,b) memset(a,b,sizeof(a))
     9 #define mod 1000000007
    10 const int maxn=1510;
    11 int n,m,t;
    12 int main(){
    13     scanf("%d",&t);
    14     while(t--){
    15         int sum=0,l=0;
    16         scanf("%d",&n);
    17         for(it i=0;i<n;i++){
    18             scanf("%d",&m);
    19             sum+=m;
    20             if(m==0){
    21                 l++;
    22             }
    23         }
    24         if(sum+l==0){
    25             l++;
    26         }
    27         printf("%d
    ",l);
    28     }
    29     return 0;
    30 }
    View Code

    B

    题意:

    给一个2*n的数组,分成两组,寻找中间值的最小的绝对值

    思路:

    就是abs(a[n/2]+a[n/2-1])的值

    这里是失智的开始,re了一发

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define il inline
     5 #define it register int
     6 #define inf 0x3f3f3f3f
     7 #define lowbit(x) (x)&(-x)
     8 #define mem(a,b) memset(a,b,sizeof(a))
     9 #define mod 1000000007
    10 const int maxn=2e5+10;
    11 int n,m,t,a[maxn];
    12 int main(){
    13     scanf("%d",&t);
    14     while(t--){
    15         scanf("%d",&n);
    16         n*=2;
    17         for(it i=0;i<n;i++){
    18             scanf("%d",&a[i]);
    19         }
    20         sort(a,a+n);
    21         printf("%d
    ",abs(a[n/2]-a[n/2-1]));
    22     }
    23     return 0;
    24 }
    View Code

    C

    题意:

    给一个n的数组,给一个公式f(x,y)=x|y-y, 重新排列数组得到数组最后计算的最大值

    思路:

    x|y-y,就是y二进制里面的1,减去与之对于在x二进制里面的1,如果与之对于的是0,不用管,减完之后的x(二进制)就是f(x,y)的值

    然后可以顺推过去,只要找到二进制里面最高位的唯一的1,就是数组最后计算的最大值,把  二进制里面最高位的唯一的1代表的数  放到第一位,就是答案

    因为一度把x y当成0~10^5,记录二进制的数组只有15,一直wa,wa的心态炸裂,不相信自己最初的思路,然后开始一系列操作和猜测

    最后快到结束了,回去瞄了一眼题,发现是10^9,同时,wa的过程也去看了D题,但问题过于长,加载半天,然后看不懂……(可能是C题一直卡着反正就很烦躁)

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define il inline
     5 #define it register int
     6 #define inf 0x3f3f3f3f
     7 #define lowbit(x) (x)&(-x)
     8 #define mem(a,b) memset(a,b,sizeof(a))
     9 #define mod 1000000007
    10 const int maxn=1e5+10;
    11 int n,m,t,vis[30],a[maxn];
    12 int main(){
    13    scanf("%d",&n);
    14     for(it i=0;i<n;i++){
    15         scanf("%d",&a[i]);
    16         int kk=a[i],ci=0;
    17         while(kk){
    18             if(kk%2==1){vis[ci]+=1;}
    19             kk/=2;ci++;
    20         }
    21     }
    22     int f=1,pos=0;
    23     for(it i=30;i>=0;i--){
    24         if(vis[i]==1){
    25             pos=i;f=0;break;
    26         }
    27     }
    28     //cout<<pos<<endl;
    29     int k=1<<pos;
    30     if(!f){
    31         for(it i=0;i<n;i++){
    32            if(a[i]&k){
    33             int tt=a[0];a[0]=a[i];a[i]=tt;
    34            }
    35         }
    36     }
    37     for(it i=0;i<n;i++){
    38         printf(i==n-1?"%d
    ":"%d ",a[i]);
    39     }
    40     return 0;
    41 }
    View Code

    DE待补,求别被hack,雪上加霜,这次又要掉分了

    觉得自己失了智,家里网速太慢了,12分钟之后才卡进去,进去的时候A题过了4k个,B题过了1k个,就感觉很凉

    但也不是这次失智的原因……C题因为将10^9看成了10^5之后,数组开了一个15,(应该开30的)然后wa了8发以后,重新读题之后发现了自己失智的情况。这题跟没做一样了

    导致DE没有时间理解去做。

    update:

    D

    题意:

    给一组点,必定是凸的多边形p,是否能平移到以(0,0)中心点,形成一个相似于p的多边形

    思路:

    p是原点对称图形就是YES,反之就是NO

    奇数点就是NO

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define il inline
     5 #define it register int
     6 #define inf 0x3f3f3f3f
     7 #define lowbit(x) (x)&(-x)
     8 #define mem(a,b) memset(a,b,sizeof(a))
     9 #define mod 1000000007
    10 const int maxn=1e5+10;
    11 int n,m,t,a[maxn][2];
    12 int main(){
    13    scanf("%d",&n);
    14    it f=1;if(n&1){f=0;}
    15    for(it i=0;i<n;i++){
    16         scanf("%d%d",&a[i][0],&a[i][1]);
    17    }
    18    if(!f){printf("NO
    ");}
    19    else{
    20         int posx=a[0][0]+a[n/2][0],posy=a[0][1]+a[n/2][1];
    21         for(it i=1;i<n/2;i++){
    22             int xx=a[i][0]+a[n/2+i][0],yy=a[i][1]+a[n/2+i][1];
    23             if(xx!=posx || yy!=posy){f=0;break;}
    24         }
    25         if(!f){printf("NO
    ");}
    26         else{printf("YES
    ");}
    27    }
    28     return 0;
    29 }
    View Code

    update2:

    E:https://www.cnblogs.com/luoyugongxi/p/12293261.html

  • 相关阅读:
    POJ 1811 Prime Test 素性测试 分解素因子
    sysbench的安装与使用
    电脑中已有VS2005和VS2010安装.NET3.5失败的解决方案
    I.MX6 show battery states in commandLine
    RPi 2B Raspbian system install
    I.MX6 bq27441 driver porting
    I.MX6 隐藏电池图标
    I.MX6 Power off register hacking
    I.MX6 Goodix GT9xx touchscreen driver porting
    busybox filesystem httpd php-5.5.31 sqlite3 webserver
  • 原文地址:https://www.cnblogs.com/luoyugongxi/p/12289588.html
Copyright © 2011-2022 走看看