hdu 5821 Ball(2016 Multi-University Training Contest 8——贪心+排序)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5821

Ball

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

Total Submission(s): 515    Accepted Submission(s): 309

Problem Description

ZZX has a sequence of boxes numbered 1,2,...,n.
Each box can contain at most one ball.

You are given the initial configuration of the balls. For 1≤i≤n,
if the i-th
box is empty then a[i]=0,
otherwise the i-th box contains exactly one ball, the color of which is a[i], a positive integer. Balls with the same color cannot be distinguished.

He will perform m operations in order. At the i-th operation, he collects all the balls from boxes l[i],l[i]+1,...,r[i]-1,r[i], and then arbitrarily put them back to these boxes. (Note that each box should always contain at most one ball)

He wants to change the configuration of the balls from a[1..n] to b[1..n] (given in the same format as a[1..n]), using these operations. Please tell him whether it is possible to achieve his goal.

Input

First line contains an integer t. Then t testcases follow.

In each testcase: First line contains two integers n and m. Second line contains a[1],a[2],...,a[n]. Third line contains b[1],b[2],...,b[n]. Each of the next m lines contains two integers l[i],r[i].

1<=n<=1000,0<=m<=1000, sum of n over all testcases <=2000, sum of m over all testcases <=2000.

0<=a[i],b[i]<=n.

1<=l[i]<=r[i]<=n.

Output

For each testcase, print "Yes" or "No" in a line.

Sample Input

5
4 1
0 0 1 1
0 1 1 1
1 4
4 1
0 0 1 1
0 0 2 2
1 4
4 2
1 0 0 0
0 0 0 1
1 3
3 4
4 2
1 0 0 0
0 0 0 1
3 4
1 3
5 2
1 1 2 2 0
2 2 1 1 0
1 3
2 4

Sample Output

No
No
Yes
No
Yes

Author

学军中学

Source

2016 Multi-University Training Contest 8

题目大意:给两个长度为n的数组a和b,再给定m次操作,每次给定l和r,每次可以把[l,r]的数进行任意调换位置,问能否在转换后使得a数组变成b数组。

解题思路:用结构体存储a数组,值和下标,下标存的是a数组对应b数组之后的下标。然后在对a数组的下标进行排序,这样就会使a数组的值随着下标的变化而变换,尽可能使a和b相同的值对应好,最后在扫一遍看两个数组相同位置的数字是否相同,相同输出Yes,否则输出No。

详见代码。

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

#define N 1010

struct node
{
    int a,i;//值和下标
} s[N];

int b[N];

bool cmp(node a,node b)
{
    return a.i<b.i;
}

int main()
{
    int t;
    scanf("%d",&t);
    while (t--)
    {
        int n,m,flag=1;
        scanf("%d%d",&n,&m);
        for (int i=0; i<n; i++)
        {
            scanf("%d",&s[i].a);
            s[i].i=-1;
        }
        for (int i=0; i<n; i++)
        {
            scanf("%d",&b[i]);
            for (int j=0; j<n; j++)
            {
                if (s[j].a==b[i]&&s[j].i==-1)
                {
                    s[j].i=i;
                    break;
                }
            }
        }
        int l,r;
        for (int i=0; i<m; i++)
        {
            scanf("%d%d",&l,&r);
            sort(s+l-1,s+r,cmp);//根据s的下标进行排序
        }
        for (int i=0; i<n; i++)
        {
            if (b[i]!=s[i].a)
            {
                flag=0;
                break;
            }
        }
        if (flag==1)
            printf ("Yes\n");
        else
            printf ("No\n");
    }
    return 0;
}
时间: 2024-08-09 06:33:24

hdu 5821 Ball(2016 Multi-University Training Contest 8——贪心+排序)的相关文章

hdu 5802 Windows 10(2016 Multi-University Training Contest 6——贪心+dfs)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5802 Windows 10 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1005    Accepted Submission(s): 333 Problem Description Long long ago, there was a

hdu 5821 Ball (贪心)

Ball Description ZZX has a sequence of boxes numbered 1,2,...,n. Each box can contain at most one ball. You are given the initial configuration of the balls. For 1 \leq i \leq n, if the i-th box is empty then a[i]=0, otherwise the i-th box contains e

hdu 6299 Balanced Sequence( 2018 Multi-University Training Contest 1 )

1 #include <stdio.h> 2 #include <iostream> 3 #include <cstdlib> 4 #include <cmath> 5 #include <string> 6 #include <cstring> 7 #include <algorithm> 8 #include <stack> 9 #include <queue> 10 #include <

hdu 5775 Bubble Sort(2016 Multi-University Training Contest 4——树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5775 Bubble Sort Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 636    Accepted Submission(s): 378 Problem Description P is a permutation of the

hdu 5792 World is Exploding(2016 Multi-University Training Contest 5——树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5792 World is Exploding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 643    Accepted Submission(s): 306 Problem Description Given a sequence A

hdu 5774 Where Amazing Happens(2016 Multi-University Training Contest 4——打表)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5774 Where Amazing Happens Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 443    Accepted Submission(s): 300 Problem Description As the premier m

HDU 2018 Multi-University Training Contest 3 Problem A. Ascending Rating 【单调队列优化】

任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6319 Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 5943    Accepted Submission(s): 2004 Problem Description Before

hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 188    Accepted Submission(s): 129 Problem Description I've bought an orchard an

HDU 4906 Our happy ending(2014 Multi-University Training Contest 4)

题意:构造出n个数 这n个数取值范围0-L,这n个数中存在取一些数之和等于k,则这样称为一种方法.给定n,k,L,求方案数. 思路:装压 每位 第1为表示这种方案能不能构成1(1表示能0表示不能)  第2为表示能不能构成2 ...  这样用d[1<<n] 的DP  像背包那样背 n次就可以 最后状态中第k位为1的就可以加上方法数. #include<cstring> #include<cstdio> #include<cmath> #include <