[code forces] Swap Adjacent Elements

Posted zhangzehua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[code forces] Swap Adjacent Elements相关的知识,希望对你有一定的参考价值。

Swap Adjacent Elements

 

题意:
给你n个从1到n不重复的数字。
通过一串01字符串告诉你任意临近的两个位置的数字能否交换。
问你能不能满足要求把这一组数字通过相邻两个数字交换的方法排成升序
能的话输出YES否则输出NO
 
代码即思路。
 
AC代码 :
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=2e5+10;
int main()
{
    int n,flag=1;
    int a[MAXN],b[MAXN];
    char str[MAXN];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    scanf("%s",str);
    b[0]=0;
    for(int i=0;i<n-1;i++)
    {
        b[i+1]= str[i]==‘1‘ ? b[i]+1 : b[i];
    }
    for(int i=0;i<n;i++)
        if(a[i]!=i+1)
        {
            if(abs(a[i]-(i+1))!=abs(b[a[i]-1]-b[i]))
            {
                flag=0;
                break;
            }
        }
    if(flag)
        printf("YES\n");
    else
        printf("NO\n");
    return 0;
}

 

以上是关于[code forces] Swap Adjacent Elements的主要内容,如果未能解决你的问题,请参考以下文章

code forces 990C

code forces 994B

code forces 994C

code forces 979C

code forces 999CAlphabetic Removals

code force 893D Credit Card