码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #616 (Div. 2) 题解

时间:2020-02-03 15:29:04      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:个数   字符串   ace   scan   using   length   out   end   题意   

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;
 }

 

Codeforces Round #616 (Div. 2) 题解

标签:个数   字符串   ace   scan   using   length   out   end   题意   

原文地址:https://www.cnblogs.com/overrate-wsj/p/12255664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!