codeforces 724B Batch Sort(暴力-列交换一次每行交换一次)
题目链接:http://codeforces.com/problemset/problem/724/B
题目大意:
给出N*M矩阵,对于该矩阵有两种操作:
(保证,每行输入的数是 1-m 之间的数且不重复)
1.交换两列,对于整个矩阵只能操作一次
2.每行交换两个数。
交换后是否可以使每行都是1-m 数字递增。
解题思路:
1.得到矩阵后先判断,是否每行可以交换两个数可以得到递增的矩阵,如果可以则输出“YES”.
2.暴力交换两列,交换两列后,判断每行是否可以交换两个数得到递增的矩阵,如果可以则输出“YES”.
[注意:如果交换之后不可得到递增的矩阵,要记得将交换后的两列交换回来]
AC Code:
#include<bits/stdc++.h>
using namespace std; const int N=;
int na[N][N];
int n,m; int judge(int na[N][N])
{
for(int i=; i<=n; i++)
{
int cut=;
for(int j=; j<=m; j++)
if(na[i][j]!=j)cut++;
if(cut>)return ;
}
return ;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=; i<=n; i++)
for(int j=; j<=m; j++)
scanf("%d",&na[i][j]);
if(judge(na))
{
printf("YES\n");
continue;
}
int flag=;
for(int i=; i<=m; i++)
{
if(flag)break;
for(int j=i+; j<=m; j++)
{
if(flag)break;
for(int x=; x<=n; x++)swap(na[x][i],na[x][j]);
if(judge(na))flag=;
for(int x=; x<=n; x++)swap(na[x][i],na[x][j]);
}
}
printf("%s\n",flag?"YES":"NO");
}
return ;
}
codeforces 724B Batch Sort(暴力-列交换一次每行交换一次)的更多相关文章
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort 暴力
B. Batch Sort 题目连接: http://codeforces.com/contest/724/problem/B Description output standard output Y ...
- CodeForces 742B Batch Sort
B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- [CF724B]Batch Sort(暴力,思维)
题目链接:http://codeforces.com/contest/724/problem/B 题意:给出n*m的数字阵,每行数都是1-m的全排列,最多可以交换2个数一次,整个矩阵可以交换两列一次. ...
- Batch Sort
Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- CF724B. Batch Sort[枚举]
B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- codeforces724-B. Batch Sort
想着想着就忘了有什么问题没解决,坑啊 一开始读错题意了,而且一着急写了两大段差不多的代码,冗余度啊,不说了.. 显然的一点,给的数据是绝对离散的,每行都是1~m的排列 难点一.如何移动能使未排序的数组 ...
- Sort 多列正排序,倒排序
linux sort 多列正排序,倒排序 转自https://segmentfault.com/a/1190000005713784 发布于 2016-06-14 sort是在Linux里非常常用 ...
- PIVOT就是行转列,UNPIVOT就是列传行
PIVOT通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT与PIVOT执行相反的操作,将表值表达式的列转换为列值. 通 ...
- sql server显示某一列中有重复值的行
sql server查询一张表 ,显示某一列中有重复值的行,可以这样写: Select * From 表名 where 列名 in(Select 列名 From Table group by 列名 h ...
随机推荐
- (function($, window, document) {}) jQuery 调用解决与其他javascript库冲突的写法
将函数包在红色字体内部,可以解决$符号与其他插件的冲突. <script type="text/javascript"> (function($, window, do ...
- 【BZOJ 2154】Crash的数字表格
制杖了,,,求前缀和的时候$i×i$是int,然后当$i=10^7$时就喜闻乐见地爆int了,,,对拍之后查了一个下午的错才发现这个问题,,,最后枚举用的变量全都强行加上long long才A掉 #i ...
- EPUBBuilder编辑器新版
epub全称为Electronic Publication的缩写,意为:电子出版, epub于2007年9月成为国际数位出版论坛(IDPF)的正式标准,以取代旧的开放Open eBook电子书标准,e ...
- 怎么学习AOPR使用方法
Advanced Office Password Recovery作为一款专业级别的Office密码破解工具,对十几种office文档的密码都可以有效的破解.一些用户朋友才开始接触Advanced O ...
- extract()函数
extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值 extract($_POST);//相当于$username = $_POST['username'];//$passwo ...
- Java中Comparable和Comparator区别小结
一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collecti ...
- double截取小数点位数
(double)decimal.Round(decimal.Parse((planVoSt.TotalCompleteAmount / planVoSt.TotalUserCount).ToStrin ...
- css-关于absolute和relative的一些笔记
根据张鑫旭老师的博客,一些笔记留作备忘 1.position:absolute 具有包裹性--包裹性换种说法就是让元素inline-block化,例如一个div标签默认宽度是100%显示的,但是一旦被 ...
- 【BZOJ-4520】K远点对 KD-Tree + 堆
4520: [Cqoi2016]K远点对 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 490 Solved: 237[Submit][Status ...
- 【csuoj1014】 西湖三人行
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1014 (题目链接) 题意 从无向图图上一点到达另一点,可以步行,搭公交或者是打的,不同的交通方式花 ...