题意很简单,给你一个n*m的矩阵,现在问你这个矩阵能否变为标准矩阵(即数字从小到大),如果能最少需要几步呢?

其实是个赤果果的水题。记得暑假安叔也出过一个类似的题目,那个好像是在codeforces上面吧。

以前我不太理解为什么是这样子做的,现在完全理解了。

对于给定的矩阵,我们可以先不顾其他的,先把任意一列和任意一行放在规定的位置,然后对其他的数进行判断,如果存在不在规定位置的数字,那么这个矩阵就是不合法的;否则这个举证就是合法的。

为什么这么做是对的呢?? 其实我们可以这样来理解。假设当前我们已经任意放好了一列和一行,但是还有其他的位置的数字不能对应相等,那么为了使另外的位置的数字对应相等,我们必须另外交换某一些列或者某一些行,而这些位置是我们本来就已经排列还的,那么我们本来排列好的位置又错位了,等于是拆东墙补西墙,所以就不可能把正确的矩阵排列出来。其实简而言之也就是行列的交换顺序在二维的情况下是可逆等价的(好像这样说不太合适,但是我也不知道怎么说明白)。正是由于这个性质,我们根据贪心的交换法则得到的解就一定是最优解了。

好好理解吧就是这样,水题,我就不多说了,直接排列好第一行和第一列,后面直接验证就好了。

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 330
using namespace std; int a[maxn][maxn],n,m,k,ans,x1,y1; void swapl(int y1,int y2)
{
for (int i=; i<=n; i++) swap(a[i][y1],a[i][y2]);
} void swapc(int x1,int x2)
{
for (int i=; i<=m; i++) swap(a[x1][i],a[x2][i]);
} bool match()
{
x1=y1=ans=;
for (int i=; i<=n; i++)
for (int j=; j<=m; j++) if (a[i][j]==) { x1=i,y1=j; break; }
if (x1== || y1==) return false;
if (x1!=) swapc(x1,),ans++;
if (y1!=) swapl(y1,),ans++;
for (int i=; i<=m; i++)
{
k=;
for (int j=i; j<=m; j++) if (a[][j]==i) { k=j;break; }
if (k==) return false;
if (k!=i) swapl(k,i),ans++;
}
for (int i=; i<=n; i++)
{
k=;
for (int j=i; j<=n; j++) if (a[j][]==i*m-m+) { k=j;break; }
if (k==) return false;
if (k!=i) swapc(k,i),ans++;
}
k=;
for (int i=; i<=n; i++)
for (int j=; j<=m; j++)
if (a[i][j]!=k++) return false;
return true;
} int main()
{
while (scanf("%d%d",&n,&m)!=EOF)
{
for (int i=; i<=n; i++)
for (int j=; j<=m; j++) scanf("%d",&a[i][j]);
if (match()) printf("%d\n",ans);
else printf("*\n");
}
return ;
}

UVA11625_Lines of Containers的更多相关文章

  1. IBM Bluemix体验:Containers持久存储

    上一篇介绍了在Bluemix Containers服务中使用docker hub镜像和container的高可用配置.接下来我们尝试如何在容器中使用持久存储. 在Bluemix的Containers服 ...

  2. IBM Bluemix体验:Containers进阶

    上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务.除了自定义镜像之外,Bluemix Containers还可以使用Do ...

  3. IBM Bluemix体验:Containers

    国际版的Bluemix目前有三个region,US South,United Kingdom和Sydney.其中US South是功能最全的,UK其次,Sydney功能最少.Containers服务在 ...

  4. Docker-2:network containers

    docker run -d -P --name web training/webapp python app.py # -name means give the to-be-run container ...

  5. Containers Reserved yarn resourcemanager

    yarn rm的管理页面中显示了集群的概况,其中有一个指标叫Containers Reserved . 预留的容器,为什么会预留,集群的资源使用饱合,新的app请求的资源一般会进入pending状态, ...

  6. Docker Network containers

    Network containers Estimated reading time: 5 minutes If you are working your way through the user gu ...

  7. docker不稳定 short running containers with -rm failed to destroy

    正常运行以下命令 sudo docker run --rm busybox echo helloworld /var/log/upstart/docker.log 日志如下: // :: POST / ...

  8. Inversion of Control Containers and the Dependency Injection pattern(转)

    In the Java community there's been a rush of lightweight containers that help to assemble components ...

  9. Effective Java 29 Consider typesafe heterogeneous containers

    When a class literal is passed among methods to communicate both compile-time and runtime type infor ...

随机推荐

  1. 20155322 2017-2018-1《信息安全系统设计》第二周 课堂测试 Linux下C语言实现MYOD

    20155322 2017-2018-1<信息安全系统设计>第二周 课堂测试 Linux下C语言实现MYOD [博客目录] 静态库测试 实现方法 相关资料 操作 动态库测试 实现方法 相关 ...

  2. Cache-Aside模式

    Cache-Aside 该模式是从数据仓库中将数据加载到缓存中,从而提高访问速度的一种模式.该模式可以有效的提高性能,同时也能一定程度上保证缓存中的数据和数据仓库中的数据的一致性,和同步数据到数据仓库 ...

  3. python中快速获取本地时区当天0点时间戳的一种方法

    如下所示,看了网上的几种方法,这种方法算是代码量比较小的,同时可以保证求的是本地时区的0点时间戳,返回的是浮点数,需要的话自己转一下int In [1]: import time In [2]: fr ...

  4. 对PostgreSQL数据库的hstore类型建立GisT索引的实验

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@g ...

  5. STM8在IAR中Printf的整形长度问题

    //ld是32位的 printf("up_intval:%ld\r\n",device_set.upload_tem); //d是16位的 printf("up_intv ...

  6. Java泛型理解

    Java泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型.当需要使用某一种算法时,又无法具体算法的数据类型,或者想指定类型值的上限或下限,那么这时就需要Java泛型来大显身手 ...

  7. LJ语录

    "保持安静,不要打扰我睡觉." ( 半分钟后) "哎呦喂~可以睡觉喽~" "考场上遇到这种题目,你们应该高兴." "因为考场上那群 ...

  8. AndroidStudio引入AAR依赖

    title: AndroidStudio引入AAR依赖 date: 2016-08-10 00:25:57 tags: [aar] categories: [Tool,Gradle] --- 概述 本 ...

  9. python3【基础】-装饰器

    要理解充分理解python的装饰器,有充分理解下述三个知识点为前提: python作用域规则 函数即对象 闭包 一.python作用域规则: 首先介绍python中的作用域规则.python的作用域规 ...

  10. BZOJ 3489 A simple rmq problem 可持久化KDtree/二维线段树

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3489 题意概述: 给出一个序列,每次询问一个序列区间中仅出现了一次的数字最大是多少,如果 ...