bzoj 1142 [POI2009]Tab 最小表示
[POI2009]Tab
Time Limit: 40 Sec Memory Limit: 162 MB
Submit: 373 Solved: 167
[Submit][Status][Discuss]
Description
Input
Output
每组数据输出“TAK”/“NIE”表示能/不能.
Sample Input
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
NIE
HINT
Source
题解:如果可以知道两个矩阵的最小表示就可以比较是否相同了,现将最小的数放到最左上角,因为每个数不同
然后,按照行的开头,再按第一行的各列来排序,就可以了,这样二维的位置,就已经被二维关键字排过了,是唯一的。
然后比较即可,时间复杂度貌似是n^3的,但是过了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std; const int N=; int a[N][N],b[N][N],n,m; int read()
{
int x=,f=;char ch=getchar();
while (ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while (ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} void work1()
{
int x,y,mn=1e7;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if (a[i][j]<mn) mn=a[i][j],x=i,y=j;
if (x!=) for (int i=;i<=m;i++) swap(a[x][i],a[][i]);
if (y!=) for (int i=;i<=n;i++) swap(a[i][y],a[i][]);
for (int i=;i<n;i++)
{
int mn=1e7,x;
for (int j=i;j<=n;j++)
if (a[j][]<mn) mn=a[j][],x=j;
if (i!=x) for (int j=;j<=m;j++) swap(a[i][j],a[x][j]);
}
for (int i=;i<m;i++)
{
int mn=1e7,x;
for (int j=i;j<=m;j++)
if (a[][j]<mn) mn=a[][j],x=j;
if (i!=x) for (int j=;j<=n;j++) swap(a[j][i],a[j][x]);
}
} void work2()
{
int x,y,mn=1e7;
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
if (b[i][j]<mn) mn=b[i][j],x=i,y=j;
if (x!=) for (int i=;i<=m;i++) swap(b[x][i],b[][i]);
if (y!=) for (int i=;i<=n;i++) swap(b[i][y],b[i][]);
for (int i=;i<n;i++)
{
int mn=1e7,x;
for (int j=i;j<=n;j++)
if (b[j][]<mn) mn=b[j][],x=j;
if (i!=x) for (int j=;j<=m;j++) swap(b[i][j],b[x][j]);
}
for (int i=;i<m;i++)
{
int mn=1e7,x;
for (int j=i;j<=m;j++)
if (b[][j]<mn) mn=b[][j],x=j;
if (i!=x) for (int j=;j<=n;j++) swap(b[j][i],b[j][x]);
}
} int main()
{
int T=read();
while (T--)
{
n=read(),m=read();
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
a[i][j]=read();
for (int i=;i<=n;i++)
for (int j=;j<=m;j++)
b[i][j]=read();
work1();work2();
int flag=;
for (int i=;i<=n;i++)
{
for (int j=;j<=m;j++)
if (a[i][j]!=b[i][j])
{
flag=;break;
}
if (flag) break;
}
if (flag) puts("NIE");
else puts("TAK");
}
return ;
}
bzoj 1142 [POI2009]Tab 最小表示的更多相关文章
- BZOJ 1142: [POI2009]Tab
1142: [POI2009]Tab Time Limit: 40 Sec Memory Limit: 162 MBSubmit: 213 Solved: 80[Submit][Status][D ...
- [BZOJ 1135][POI2009]Lyz
[BZOJ 1135][POI2009]Lyz 题意 初始时滑冰俱乐部有 \(1\) 到 \(n\) 号的溜冰鞋各 \(k\) 双.已知 \(x\) 号脚的人可以穿 \(x\) 到 \(x+d\) 的 ...
- [BZOJ 2127] happiness 【最小割】
题目链接:BZOJ - 2127 题目分析 首先,每个人要么学文科,要么学理科,所以可以想到是一个最小割模型. 我们就确定一个人如果和 S 相连就是学文,如果和 T 相连就是学理. 那么我们再来确定建 ...
- BZOJ.3532.[SDOI2014]LIS(最小割ISAP 退流)
BZOJ 洛谷 \(LIS\)..经典模型? 令\(f_i\)表示以\(i\)结尾的\(LIS\)长度. 如果\(f_i=1\),连边\((S,i,INF)\):如果\(f_i=\max\limits ...
- BZOJ 2561 最小生成树 | 网络流 最小割
链接 BZOJ 2561 题解 用Kruskal算法的思路来考虑,边(u, v, L)可能出现在最小生成树上,就是说对于所有边权小于L的边,u和v不能连通,即求最小割: 对于最大生成树的情况也一样.容 ...
- bzoj 1497 最大获利 - 最小割
新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研 ...
- bzoj 1119 [POI2009] SLO & bzoj 1697 牛排序 —— 置换+贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1119 https://www.lydsy.com/JudgeOnline/problem.p ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- BZOJ 1070: [SCOI2007]修车 [最小费用最大流]
1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 4936 Solved: 2032[Submit][Status] ...
随机推荐
- Java Web开发框架Spring+Hibernate整合效果介绍(附源码)(已过期,有更好的)
最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...
- 日历(Calendar)模块
#usr/bin/python3 #! -*-conding : utf-8 -*- #2018.3.14 """ 日历(Calendar)模块 此模块的函数都是日历相关 ...
- git branch 分支与合并
在使用 git 进行分支开发与合并的时候需要用到这些命令.其他基本 git 命令参考 Git 简易食用指南 git branch 查看分支 git branch 查看当前分支情况 创建分支 git b ...
- Alpha发布——视频展示
一.视频链接 http://v.youku.com/v_show/id_XMzEyODQzNzQ2MA==.html 二.视频文案说明 你是不是还在为软工作业奋笔疾书? 你是不是无法及时查看最新博客信 ...
- C++基础和STL,Effective C++笔记
这个作者总结的c++基础,特别好. 可以看看. http://blog.csdn.net/tham_/article/details/51169792
- c# throw抛出上一个异常
catch(exception e) { throw; } 不仅抛出这次的异常,也抛出之前的异常. 用法示例:函数A调用函数B,A用到此throw时,B中发生的异常也会继承过来. catch(exce ...
- 由作业题引发对C++引用的一些思考
首先分析一段代码: #include <bits/c++config.h> #include <ostream> #include <iostream> #incl ...
- android入门 — PopupWindow
第一步:自定义xml文件 第二步:获取LayoutInflater对象 第三步:调用inflate()方法获取View对象 第四步:创建PopupWindow对象 第五步:调用PopupWindow的 ...
- java面试95题
1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...
- LR脚本编写时的几个小技巧
参数化空值 如上图所示,当参数化时某个值需要为空值(非空格),直接在参数化文件中空一行/格即可,虽然Parameter List界面上没有显示空的那一行,但并不影响取值. 手工日志跟踪 lr_set_ ...