HDU 5821 ball

来源:互联网 发布:linux一键安装包kangle 编辑:程序博客网 时间:2024/06/05 04:22
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 1in, 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
54 10 0 1 10 1 1 11 44 10 0 1 10 0 2 21 44 21 0 0 00 0 0 11 33 44 21 0 0 00 0 0 13 41 35 21 1 2 2 02 2 1 1 01 32 4
 

Sample Output
NoNoYesNoYes
 


贪心的去想结论,首先两个序列排序完一定是一样的,否则是No

然后考虑b中每个点从哪里来,假如b[i]=k是b中第j个k,那么这个k应该也是a中的第j个k.

于是把a中每个点对应的最终位置标记出来,操作就等于进行区间排序,如果结果不是c[i]=i那就是No了

#include<set>#include<map>#include<ctime>#include<cmath>#include<stack>#include<queue>#include<bitset>#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>#include<functional>#define rep(i,j,k) for (int i = j; i <= k; i++)#define per(i,j,k) for (int i = j; i >= k; i--)#define lson x << 1, l, mid#define rson x << 1 | 1, mid + 1, r#define fi first#define se second#define mp(i,j) make_pair(i,j)#define pii pair<int,int>using namespace std;typedef long long LL;const int low(int x) { return x&-x; }const double eps = 1e-8;const int INF = 0x7FFFFFFF;const int mod = 1e9 + 7;const int N = 1e3 + 10;const int read(){    char ch = getchar();    while (ch<'0' || ch>'9') ch = getchar();    int x = ch - '0';    while ((ch = getchar()) >= '0'&&ch <= '9') x = x * 10 + ch - '0';    return x;}int T, n, m, a[N], b[N], l, r, f[N], c[N], flag;int main(){    T = read();    while (T--)    {        scanf("%d%d", &n, &m);         rep(i, 1, n) a[i] = read();        rep(i, 1, n) b[i] = read();        rep(i, 1, n) f[i] = 0;        flag = 0;        rep(i, 1, n)        {            rep(j, 1, n)            {                if (f[j] || b[i] != a[j]) continue;                flag += f[j] = 1; c[j] = i;  break;            }        }        rep(i, 1, m)        {            scanf("%d%d", &l, &r);            if (flag < n) continue;            sort(c + l, c + r + 1);        }        rep(i, 1, n) if (c[i] != i) flag = 0;        printf("%s\n", flag < n ? "No" : "Yes");    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 英雄联盟老出错怎么办? lol下载0kb怎么办 手机md5校验失败怎么办 王者荣耀占内存怎么办 信用卡被暂停使用怎么办 宝宝爱涂鸦怎么办呢 大良老板欠薪怎么办 投影仪流明很低怎么办 户外涂鸦没有墙怎么办 word突然未响应怎么办 文档突然未响应怎么办 pr不自己播放怎么办 笔记本电脑空格键打字失灵怎么办 小孩受凉打喷嚏流鼻涕怎么办 头疼打喷嚏流鼻涕鼻塞怎么办 头疼打喷嚏想吐怎么办 感冒鼻塞头疼打喷嚏怎么办 孕期打喷嚏漏尿怎么办 孕妇打喷嚏漏尿怎么办 打喷嚏停不下来怎么办 鼻炎不停的打喷嚏怎么办 感冒了鼻子痒怎么办 怀孕鼻炎严重了怎么办 鼻炎不停打喷嚏流鼻涕怎么办 鼻子里面干痒怎么办 有鼻炎老打喷嚏怎么办 鼻子喷嚏打不停怎么办 鼻子痒想打喷嚏怎么办 鼻痒打喷嚏流鼻涕怎么办 原配找到公司了怎么办 西北游不吃羊肉怎么办 水培植物冬天该怎么办 车里味道太大怎么办 同房后有异味怎么办 房间里有异味怎么办 身上有孤臭味怎么办 炉灶打不着火怎么办 檀香木香味小了怎么办 郁金香种球发霉怎么办 烧到小天真香该怎么办 qq留言删除频繁怎么办