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 ...
随机推荐
- [Google Guava]学习--缓存cache
适用性 缓存在很多情况下非常实用.例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考虑使用缓存. Guava Cache与ConcurrentMap很相似,但也不完全 ...
- git常用命令学习
Git commands 1. start a working area clone Clone a repository into a new directory init Create an em ...
- 在Eclipse 中打开当前文件夹
最近试过好多次,安装插件来 在Eclipse 中打开当前文件所在文件夹,结果总是不甚如意. 烦躁了,决定还是不要使用插件了!!! 1.打开Eclipse,点击菜单栏上的Run--External To ...
- Ext-ajax请求数据
Ext.Ajax.request({ url: webPath+'/news/newsEastmoneyList', method: 'POST', success: function (respon ...
- 简单的cookie使用
<html><head><script type="text/javascript">function getCookie(c_name){if ...
- jquery datatable
<html><head></head> <script type="text/javascript"> $(document).re ...
- 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
在要输出的内容前先输出"\xEF\xBB\xBF", eg:要输出的内容保存在$content里$content = "\xEF\xBB\xBF".$conte ...
- Windows系统中path环境变量详解
在学习JAVA的过程中,涉及到多个环境变量(environment variable)的概念,如PATH.正确地配置这些环境变量,是能够顺利学习.开发的前提.而经常出现的问题是:有的学习者能够按照提示 ...
- MySQL数据表格导入导出
一 初始数据(共6条记录) username userpwd age admin admin 18 root root 18 cat cat 17 dog dog 15 dog1 dog1 15 zh ...
- 一些免费收费api收藏
转载:http://blog.csdn.net/sdjianfei/article/details/53157334 一 .api 1.http://apistore.baidu.com/astore ...