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

  • 相关阅读:
    Scrapy框架-scrapy框架快速入门
    Scrapy框架-scrapy框架架构详解
    linux常用命令大全
    Redis常用命令大全
    centos7安装keepalived问题
    redis集群部署那点事
    centos7安装python3.6后导致防火墙功能无法正常工作的解决办法
    MySQL/Oracle视图的创建与使用
    通过sqoop将hdfs数据导入MySQL
    股票交易日定时爬取上交所/深交所所有股票行情数据存储到数据库
  • 原文地址:https://www.cnblogs.com/luoyugongxi/p/12289588.html
Copyright © 2011-2022 走看看