日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

[日常训练]变戏法

發布時間:2025/5/22 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [日常训练]变戏法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

一開始有$n$個只有顏色不同的小球。定義使用一次膜法的效果是重新排列第$l_i$個到第$r_i$個小球。給定了$n$個小球的初始狀態和最終狀態,以及$m$次膜法的范圍$l_i,r_i$。判斷是否可以從初始狀態轉移到最終狀態。

Input

第一行有一個整數$t$表示數據組數。

每組數據中,

第一行兩個整數$n,m$,表示總共有$n$個小球,$m$次操作。

第二行$n$個整數$a_i$,表示初始狀態。

第三行$n$個整數$b_i$,表示最終狀態。

接下來$m$行,每行兩個整數$l_i,r_i$。

Output

輸出共$t$行。對于每組數據,如果合法,輸出"$TAK$",否則輸出"$NIE$"。

Sample Input

3
10 3
1 2 3 4 5 6 7 8 9 10
2 1 3 6 4 5 9 8 7 10
4 8
1 3
5 9
10 3
1 2 3 4 5 6 7 8 9 10
2 1 3 6 10 4 5 9 8 7
4 8
1 3
5 9

10 3
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 9
4 8
1 3
5 9

Sample Output

TAK
NIE
NIE

HINT

$1\;\leq\;t\;\leq\;10,1\;\leq\;n,m,a_i,b_i\;\leq\;1000$.

Solution

對于顏色相同的小球,如果可行,一定存在一種不改變它們相對順序的方法。所以我們可以將所有小球一一對應。然后將最終狀態的小球從$1$到$n$標號,然后每次操作相當于區間排序。最后判斷是否相等即可。

#include<cmath> #include<ctime> #include<queue> #include<stack> #include<cstdio> #include<vector> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define N 1005 using namespace std; int a[N],c[N][N],t[N],n,m,ti; bool flag; inline int read(){int ret=0;char c=getchar();while(!isdigit(c))c=getchar();while(isdigit(c)){ret=(ret<<1)+(ret<<3)+c-'0';c=getchar();}return ret; } inline void Aireen(){ti=read();while(ti--){n=read();m=read();memset(t,0,sizeof(t));for(int i=1;i<=n;++i)a[i]=read();for(int i=1,k;i<=n;++i){k=read();c[k][++t[k]]=i;}for(int i=n,k;i;--i){k=a[i];a[i]=c[k][t[k]--];}for(int i=1,l,r;i<=m;++i){l=read();r=read();sort(a+l,a+1+r);}flag=true;for(int i=1;i<=n;++i)if(a[i]!=a[i-1]+1){flag=false;break;}if(flag) puts("TAK");else puts("NIE");} } int main(){freopen("mogic.in","r",stdin);freopen("mogic.out","w",stdout);Aireen();fclose(stdin);fclose(stdout);return 0; }

轉載于:https://www.cnblogs.com/AireenYe/p/6243701.html

總結

以上是生活随笔為你收集整理的[日常训练]变戏法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。