zoukankan      html  css  js  c++  java
  • CF1365F Swaps Again(思维)

    题意:

    给出两串序列a和b,每次操作可以选择其中一串序列,把它的前k个元素和最后k个元素交换,k<=n/2,询问是否有可能使得两个序列相等。

    题解:

    思考之后可以想到,数组中原来下标和为n+1的二元组,无论怎么交换,下标和永远是n+1。根据这个性质,可以提取出这些二元组,看看能不能完全匹配。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=505;
    int t,n;
    int a[maxn];
    int b[maxn];
    int visit[maxn];//标记二元组是否被使用 
    int main () {
        scanf("%d",&t);
        while (t--) {
            scanf("%d",&n);
            for (int i=1;i<=n;i++) scanf("%d",&a[i]);
            for (int i=1;i<=n;i++) scanf("%d",&b[i]),visit[i]=0;
            int f=1;
            for (int i=1;i<=n/2;i++) {
                int x=a[i];
                int y=a[n-i+1];
                f=0;
                for (int j=1;j<=n/2;j++) {
                    if (visit[j]) continue;
                    if ((b[j]==x&&b[n+1-j]==y)||(b[j]==y&&b[n+1-j]==x)) {
                        visit[j]=1;
                        f=1;
                        break;
                    }
                }
                if (!f) break;
            } 
            if (n%2==1&&a[n/2+1]!=b[n/2+1]) f=0;
            if (f)
                printf("yes
    ");
            else
                printf("no
    ");
        }
    } 
  • 相关阅读:
    20170926-构建之法:现代软件工程-阅读笔记
    我的swift的ui标签
    内存管理:内存泄漏和空悬指针
    闭包
    泛型,修饰符和异常处理
    类型转换,接口和扩展
    初始化2
    类的继承和初始化1
    枚举与可选值
    swift中的类和结构
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/13093035.html
Copyright © 2011-2022 走看看