Description

2个n\(\times\)m矩阵,保证同一个矩阵中元素两两不同。问能否通过若干次交换两行或交换两列把第一个矩阵变成第二个。

Input

第一行正整数T(1≤T≤10)表示数据组数.

每组数据包括:第一行nm(1≤n,m≤1000)2个n行m列的整数矩阵,

元素绝对值均在10^6以内

Output

每组数据输出“TAK”/“NIE”表示能/不能.

Sample Input

2

4 3

1 2 3

4 5 6

7 8 9

10 11 12

11 10 12

8 7 9

5 4 6

2 1 3

2 2

1 2

3 4

5 6

7 8

Sample Output

TAK

NIE


这题随便乱搞即可

找到第一个矩阵中的每一行应该对应第二个矩阵的某一行,然后求出置换序列,最后判断每一行的置换序列是否一样即可

然后找到对应的行数我就是sort+hash……反正巨蠢……

/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline int read(){
int x=0,f=1;char ch=getchar();
for (;ch<'0'||ch>'9';ch=getchar()) if (ch=='-') f=-1;
for (;ch>='0'&&ch<='9';ch=getchar()) x=(x<<1)+(x<<3)+ch-'0';
return x*f;
}
inline void print(int x){
if (x>=10) print(x/10);
putchar(x%10+'0');
}
const int N=1e3,p=1e9+7,digit=233,limit=1e6;
int A[N+10][N+10],B[N+10][N+10],_A[N+10][N+10],_B[N+10][N+10];
int cnt[(limit<<1)+10],pol[N+10];
struct S1{
int hash,ID;
void insert(int a,int b){hash=a,ID=b;}
bool operator <(const S1 &x)const{return hash<x.hash;}
}HA[N+10],HB[N+10];
int n,m;
int Hash(int *a){
int res=0;
for (int i=1;i<=m;i++) res=(1ll*res*digit+a[i])%p;
return res;
}
void work(){
n=read(),m=read();
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++) A[i][j]=_A[i][j]=read()+limit;
sort(_A[i]+1,_A[i]+1+m);
HA[i].insert(Hash(_A[i]),i);
}
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++) B[i][j]=_B[i][j]=read()+limit;
sort(_B[i]+1,_B[i]+1+m);
HB[i].insert(Hash(_B[i]),i);
}
sort(HA+1,HA+1+n),sort(HB+1,HB+1+n);
for (int i=1;i<=n;i++) if (HA[i].hash!=HB[i].hash){printf("NIE\n");return;}
for (int i=1;i<=m;i++) cnt[B[HB[1].ID][i]]=i;
for (int i=1;i<=m;i++) pol[i]=cnt[A[HA[1].ID][i]];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (A[HA[i].ID][j]!=B[HB[i].ID][pol[j]]){printf("NIE\n");return;}
printf("TAK\n");
}
int main(){
for (int Data=read();Data;Data--) work();
return 0;
}

[POI2009]Tab的更多相关文章

  1. BZOJ 1142: [POI2009]Tab

    1142: [POI2009]Tab Time Limit: 40 Sec  Memory Limit: 162 MBSubmit: 213  Solved: 80[Submit][Status][D ...

  2. bzoj 1142 [POI2009]Tab 最小表示

    [POI2009]Tab Time Limit: 40 Sec  Memory Limit: 162 MBSubmit: 373  Solved: 167[Submit][Status][Discus ...

  3. bzoj1142:[POI2009]Tab

    传送门 考虑每次交换都不会改变每个数所在的行和列(不是指编号,而是指和它在同一行或者同一列的数不会发生变化) 由于每个数互不相同,所以记录下每个数所在的行和列,暴力判断就好了 代码: #include ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. android 使用Tabhost 发生could not create tab content because could not find view with id 错误

    使用Tabhost的时候经常报:could not create tab content because could not find view with id 错误. 总结一下发生错误的原因,一般的 ...

  6. 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  7. GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1)

    GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1) 前言: 无意打开GooglePlay app来着,然后发现首页用了揭示效果,连起来用着感觉还不错. 不清楚 ...

  8. 通过easyui tab添加的子页面JS脚本必须放在body才生效

    通过easyui tab添加的子页面JS脚本必须放在body才生效 可通过Chrome查看元素时,head标签是否含有你自己写的JS代码

  9. jQuery的DOM操作实例(1)——选项卡&&Tab切换

    一.原生JavaScript编写tab切换 二.jQuery编写tab切换 在用jQuery编写选项卡过程中,重要的事搞清楚 .eq() 和 .index() 的使用方法. .eq()是jQuery遍 ...

随机推荐

  1. iterm2退出时保存会话状态,下次打开恢复

    可以保存已经打开的窗口,本机进入的目录 无法保存ssh连接状态,无法保存ipython状态等 设置方法: 1.这里设置为yes,据说,反复修改一次,重启才起作用,实在有问题就试试 2.这里设置一下 3 ...

  2. N+6 裁员裁出幸福感的背后

    01. 史上最牛逼的数据库公司,Oracle 裁员了. 2019年5月7日,甲骨文召开了面向全中国区的电话会议,亚太区人力资源负责人在会上简要介绍道,公司正进行业务结构调整,导致一部分人要离开岗位,这 ...

  3. CEF3研究(四)之javascript集成

    一.介绍 谷歌浏览器和CEF使用V8JavaScript Engine作为内容的JavaScript实现.在浏览器中的每个窗口都有它自己在的JS上下文提供作用域和在窗口中安全的执行JS代码.CEF暴露 ...

  4. powershell 通过SMTP发送邮件

    一直以来就用.net的方式发送邮件.由于powershell自带的方式用起来easy出错.且比較简单,近期看到一些人也反应使用中遇到麻烦. #定义函数 function sendmail($maila ...

  5. 纯JS写的一款记录事项的单页应用

    要点: 1.使用localStorage存储 2._change_record_progress函数以字符串作为参数,用eval执行这个参数 3.使用了jQuery自定义事件,便于数据改变时实时更新显 ...

  6. jQuery的AJax异步訪问

    用一个样例用以说明:点击button,将input内用户输入的数据发送给服务端.并将结果返回给页面. 首先是html承载内容: <!DOCTYPE html> <html> & ...

  7. 2015/12/29 eclipse应用 输出三角形

    public class Myfirst { public static void main(String[] args) { System.out.println("hello world ...

  8. Linq:int类型使用Contains方法

    获取的是前台传过来的String类型的值,例如:1,123,44,59 具体代码如下 if (!string.IsNullOrEmpty(str)) { string[] strArr = str.S ...

  9. TCP Operational Overview and the TCP Finite State Machine (FSM) http://tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF.htm

    http://tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF.htm   http://tcpipgu ...

  10. Latex 3: 解决LaTeX编译卡顿问题

    1.问题: 最近在编译latex时,老是在tulmr.fd处编译很久,但是以前不这样啊,那肯定就是我最近做了什么导致这样的了,是什么呢? 2.解决: 后来google下发现了解决办法,原来是我新安装了 ...