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

    A. Even But Not Even

    题意:

    定义一个数所有位置的和为偶数它本身不为偶数的数为ebne,现在给你一个数字字符串,你可以删除任意位置上的数字使其变为ebne输出任意改变后的结果,如果不能则输出-1

    思路:

    比赛的时候分类讨论过的。。。真是愚蠢至极妈的

    其实只要看字符串中奇数的个数就好了,如果小于两个则肯定不行,如果大于两个则直接按相对位置输出任意两个就好了

    #include<iostream>
    #include<algorithm>
    #include<string>
     using namespace std;
     int main()
     {
         int t,n;
         scanf("%d",&t);
         while(t--){
             string a,b;
             cin>>n>>a;
             for(int i=0;i<n;i++){
                 if((a[i]-'0')%2)
                     b+=a[i];
             }
            if(b.length()<2)    cout<<"-1"<<endl;
            else    cout<<b.substr(0,2)<<endl;
         }
        return 0;
      } 

    B. Array Sharpening

    题意:

    给你一个数组,你可以对任意位置上的元素进行任意次的减1操作(不能使元素小于0),使得该数组变成一个先严格递增再严格递减的数组(也可以只升不降,只降不升)

    思路:

    我们考虑将每个元素都作为转折点尝试,如果a[i]<min(i,n-i-1)的话该序列一定不行,最后还需特判一下n为偶数n/2-1与n/2是否相同

    #include<iostream>
    #include<algorithm>
     using namespace std;
     const int maxn=3e5+10;
     int a[maxn];
     int main()
     {
         int t,n;
         scanf("%d",&t);
         while(t--){
             scanf("%d",&n);
             int flag=0;
             for(int i=0;i<n;i++){
                 scanf("%d",&a[i]);
                 if(a[i]<min(i,n-1-i)) flag=1;
             }
            if(n%2==0)    if(a[n/2-1]==n/2-1&&a[n/2]==a[n/2-1]) flag=1;
            if(flag)    cout<<"No"<<endl;
            else    cout<<"Yes"<<endl;     
         }
        return 0;
     }

     C. Mind Control

    题意:

    n个元素,n个人轮流取数,可以取数组头或尾元素,你在第m轮取,并且你可以控制k个人取什么元素,问你能取得最大元素是多少(前面的人不一定都取最大的)

    思路:

    枚举一下现在强制多少人站队听他的,遍历剩下不听他的人的人数,然后把从后往前和从前往后的最大值的最小值的最大值算出来就可以了

    #include<iostream>
    #include<algorithm>
    #define inf 0x3f3f3f3f
     using namespace std;
     const int maxn=3510;
     int a[maxn],t,n,m,k;
     int main()
     {
         scanf("%d",&t);
         while(t--){
             scanf("%d%d%d",&n,&m,&k);
             for(int i=0;i<n;i++)    scanf("%d",&a[i]);
             k=min(m-1,k);
             int ans=-inf;
             for(int i=0;i<=k;i++){
                 int x=inf;
                 for(int j=0;j<m-k;j++)    x=min(x,max(a[i+j],a[n+i+j-m]));
                ans=max(ans,x);
             }
            cout<<ans<<endl;    
         }
        return 0;
     }
  • 相关阅读:
    10.RobotFramework: 获取当前时间戳
    9.接口自动化-自定义关键字、接口设计规范
    8.接口自动化-RequestLibrary库的介绍与示例讲解
    7.接口自动化-环境常用库搭建
    6.数据库操作(DatabaseLibrary)与常见问题
    5.远程服务器操作(SSHLibrary)
    概率密度与概率分布函数
    Linux安装包类型
    随机变量与随机过程
    hosts文件
  • 原文地址:https://www.cnblogs.com/overrate-wsj/p/12255664.html
Copyright © 2011-2022 走看看