P8197[传智杯#4决赛]排排队-创新互联

cyq 在 tsyz 担任了体育老师,负责排队一事。

我们提供的服务有:网站建设、成都网站制作、微信公众号开发、网站优化、网站认证、禹会ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的禹会网站制作公司

在 tsyz 中,每个人都有一个身高 ai​,并且只有相邻的两个人可以交换位置。cyq 带领的队伍有 n 个人,他现在要给大家排队形。

给定一个长度为 n 的序列 b,一个队形被认为美观,当且仅当对于所有的 i=1,2,3,…n,ai​=bi​。cyq 想知道,他能否让大家的队形变得美观,并且交换相邻两个人的次数不超过 n^2 次。这个问题把 cyqcyq 难住了,请你帮他来解决这个问题,如果存在合法的交换方案,输出 YES,并给出一组方案;否则,输出 NO

输入格式

本题单测试点内有多组测试数据。

第一行是一个整数 T,表示数据组数,对于每组数据:
第一行是一个整数,表示队伍的长度 n。
第二行有 n 个整数,第 i 个整数表示第 i 个人的身高 ai​。
第三行有 n 个整数,第 i 个整数表示美观队形里第 i 个人的身高 bi​。

输出格式

对每组数据依次分别输出答案。

对于每组数据,若存在一种方案,则在第一行输出一个 YES,否则输出一个 NO

如果输出 YES,下面则输出若干行每行两个整数 i,j,表示第 i个同学和第 j个同学交换位置,显然 ∣i−j∣=1。在交换完成后,你还需要输出一行 0表示你的操作结束了,请注意数组的下标从 1 开始编号至 n。

如果输出 NO,则接下来什么都不需要输出。

请特别注意,对于每组数据,你的操作次数不能超过 n^2(不包括 0 0一行),否则将得到 WA(Wrong Answer) 的结果。

输入输出样例

输入 #1复制

3
4
1 2 2 3
3 2 2 1
3
1 2 3
1 2 4
1
1
1

输出 #1复制

YES
4 3
2 3
1 2
3 2
3 4
0 0
NO
YES
0 0
说明/提示 数据规模与约定

对于全部的测试点,保证 1≤T≤10,1≤n≤103,1≤ai​,bi​≤109,且各个测试点 n 之和不超过 1000,即 ∑n≤103。

提示
  • 请注意大量的输出输出对程序效率造成的影响,不要频繁刷新缓冲区。例如,对于使用 std::cout的 C++ 选手,请使用 '\n'而不是 std::endl来换行;对于 java 选手,请选择高效率的输出方式,如使用 PrintWriter;python 选手可以正常的使用 print 而无需考虑效率问题。
  • 请按照输出格式的要求输出您的答案,如果格式不符合要求,返回的评测信息将可能是 TLE、RE、WA、UKE 等任何结果。
C++ 语言的高效输出样例
#includeint main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  for (int i = 1; i<= 5; ++i) {
    std::cout<< i<< '\n'; // 注意这里不能使用 std::endl
  }
}
Java 语言的高效输出样例
import java.io.PrintWriter;

public class Main {
  public static void main(String[] args) {
    PrintWriter ot = new PrintWriter(System.out);
    for (int i = 1; i<= 5; ++i) {
      ot.println(i);
    }
    ot.flush(); // 请务必保证在程序结束时运行本条语句,否则在缓冲区的内容无法输出
  }
}
#include#include 
using namespace std;

int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,a[1005],a1[1005],b[1005],b1[1005],temp=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            a1[i]=a[i];
        }
        for(int i=1;i<=n;i++){
            scanf("%d",&b[i]);
            b1[i]=b[i];
        }
        sort(a1+1,a1+n+1);
        sort(b1+1,b1+n+1);
        for(int i=1;i<=n;i++){
            if(a1[i]!=b1[i])
                temp=1;
        }
        if(temp){
            printf("NO\n");
        }
        else{
            printf("YES\n");
            for(int i=1;i<=n;i++)//循环b的元素
            {
                int x;
                for(int j=1;j<=n;j++)
                {
                    if(a[j]==b[i])
                    {
                        x=j;
                        break;
                    }
                }
                for(int j=x;j>i;j--)
                {
                    swap(a[j],a[j-1]);
                    printf("%d %d\n",j,j-1);
                }
            }
            printf("0 0\n");
        }
    }
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享标题:P8197[传智杯#4决赛]排排队-创新互联
浏览地址:https://www.cdcxhl.com/article40/dichho.html

成都网站建设公司_创新互联,为您提供企业建站云服务器定制网站企业网站制作移动网站建设全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名