• codeforces B. Pasha and String


    Pasha got a very beautiful string s for his birthday, the string consists of lowercase Latin letters. The letters in the string are numbered from 1 to |s| from left to right, where |s| is the length of the given string.

    Pasha didn't like his present very much so he decided to change it. After his birthday Pasha spent m days performing the following transformations on his string — each day he chose integer ai and reversed a piece of string (a segment) from position ai to position|s| - ai + 1. It is guaranteed that ai ≤ |s|.

    You face the following task: determine what Pasha's string will look like after m days.

    Input

    The first line of the input contains Pasha's string s of length from 2 to 2·105 characters, consisting of lowercase Latin letters.

    The second line contains a single integer m (1 ≤ m ≤ 105) —  the number of days when Pasha changed his string.

    The third line contains m space-separated elements ai (1 ≤ aiai ≤ |s|) — the position from which Pasha started transforming the string on the i-th day.

    Output

    In the first line of the output print what Pasha's string s will look like after m days.

    Sample test(s)
    input
    abcdef
    1
    2
    
    output
    aedcbf
    
    input
    vwxyz
    2
    2 2
    
    output
    vwxyz
    
    input
    abcdef
    3
    1 2 3
    
    output
    fbdcea
    
    
    这题和涂气球那道类似,用了叠加的思想。
    #include<stdio.h>
    #include<string.h>
    int d[200005];
    char str[200005];
    int main()
    {
        int n,m,i,j,a,len,s;
        char c;
        while(scanf("%s",str+1)!=EOF)
        {
            len=strlen(str+1);
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a);
                d[a]++;
            }
            s=0;
            for(i=1;i<=len/2;i++)
            {
                s=s+d[i];
                d[i]=s;
            }
            for(i=1;i<=len/2;i++)
            {
                if(d[i]%2==1)
                {
                    c=str[i];
                    str[i]=str[len+1-i];
                    str[len+1-i]=c;
                }
            }
            //printf("%d %d %d",d[1],d[2],d[3]);
            for(i=1;i<=len;i++)
            {
                printf("%c",str[i]);
            }
            printf("
    ");
            
        }
    }

  • 相关阅读:
    跟着我学习-python-01-流程控制语句
    跟着我学习-python-01-用户交互
    跟着我学习-python-02-while循环
    基于Centos7.6上Ambari2.7.4+HDP3.1.4离线安装
    TDH(Transwarp Data Hub)社区版安装教程
    跟我学习日常写的shell脚本-设置系统selinux
    [Linux]常用命令“ll”失效或命令未找到
    NPOI
    Linq&lamda相关
    接口相关
  • 原文地址:https://www.cnblogs.com/herumw/p/9464865.html
Copyright © 2020-2023  润新知