zoukankan      html  css  js  c++  java
  • 【CF1027A】Palindromic Twist(模拟)

    题意:输入T组字符串,每个字符串都必须改变一次,每个字母改变的规则是变成相邻的字母,字母a只能变b,z只能变y,判断改变后的字符依旧是否能够变成回文串

    n<=1e2

    思路:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<string>
     4 #include<cmath>
     5 #include<iostream>
     6 #include<algorithm>
     7 #include<map>
     8 #include<set>
     9 #include<queue>
    10 #include<vector>
    11 using namespace std;
    12 typedef long long ll;
    13 typedef unsigned int uint;
    14 typedef unsigned long long ull;
    15 typedef pair<int,int> PII;
    16 typedef vector<int> VI;
    17 #define fi first
    18 #define se second 
    19 #define MP make_pair
    20 #define N   410000
    21 #define MOD 1000000007
    22 #define eps 1e-8 
    23 #define pi acos(-1)
    24 #define oo 110000000000000
    25 
    26 char c[N][2],a[N];
    27 int b[N];
    28 
    29 int read()
    30 { 
    31    int v=0,f=1;
    32    char c=getchar();
    33    while(c<48||57<c) {if(c=='-') f=-1; c=getchar();}
    34    while(48<=c&&c<=57) v=(v<<3)+v+v+c-48,c=getchar();
    35    return v*f;
    36 }
    37 
    38 
    39 void swap(int &x,int &y)
    40 {
    41     int t=x;x=y;y=t;
    42 }
    43 
    44 
    45 
    46 int main()
    47 {
    48     //freopen("1.in","r",stdin);
    49     //freopen("1.out","w",stdout);
    50     int cas;
    51     scanf("%d",&cas);
    52     while(cas--)
    53     {
    54         int n;
    55         scanf("%d",&n);
    56         scanf("%s",a+1); 
    57         for(int i=1;i<=n;i++)
    58         {
    59             if(a[i]=='a') {b[i]=1; c[i][1]='b'; continue;}
    60             if(a[i]=='z') {b[i]=1; c[i][1]='y'; continue;}
    61             b[i]=2; c[i][1]=a[i]+1; c[i][2]=a[i]-1;
    62         }
    63     //    for(int i=1;i<=n;i++) printf("%d ",b[i]);
    64         
    65         int flag=1;
    66         for(int i=1;i<=n/2;i++)
    67         {
    68             int t=0;
    69             for(int j=1;j<=b[i];j++)
    70              for(int k=1;k<=b[n-i+1];k++) 
    71               if(c[i][j]==c[n-i+1][k]) t=1;
    72             if(t==0) flag=0;
    73         }
    74         if(flag) printf("YES
    ");
    75          else printf("NO
    ");
    76     }
    77     return 0;
    78 }
  • 相关阅读:
    从一个整数数组中取出最大的整数,最小整数,总和,平均值
    9、数组知识点小结
    结构类型小结
    枚举类型小结
    asp.net MVC 笔记
    Android自动化测试之Shell脚本一——模拟触屏事件
    Android性能优化案例研究
    ViewHolder模式的简洁写法
    genymotion ddms查看data等文件目录
    Android事件传递机制
  • 原文地址:https://www.cnblogs.com/myx12345/p/9843826.html
Copyright © 2011-2022 走看看