题意很简单,给你一个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. 20155318 《Java程序设计》实验五 (网络编程与安全)实验报告

    20155318 <Java程序设计>实验五 (网络编程与安全)实验报告 实验内容 了解计算机网络基础 掌握Java Socket编程 理解混合密码系统 掌握Java 密码技术相关API的 ...

  2. C语言复习20170826

    数组 先定义,再初始化,最后使用. 访问数组中的元素可以采用数组名加下标的方式,下标是从0开始,c并不检查数组下标是否越界,所以在访问数组中的元素时需要注意,需要对数组下标做判断,防止访问数组越界. ...

  3. 1.Delphi Rest后台+MUI前台开发App前言

    尽管不是专业的程序猿,但是对Delphi的喜爱已经10多年了.一直以来用Delphi开发一些小应用若干个,同时用Delphi给朋友开发一些中小型的业务平台也有几个.可以说Delphi对于数据库的操作, ...

  4. [arc063F]Snuke's Coloring 2-[线段树+观察]

    Description 传送门 Solution 我们先不考虑周长,只考虑长和宽. 依题意得答案下限为max(w+1,h+1),并且最后所得一定是个矩形(矩形内部无点). 好的,所以!!!答案一定会经 ...

  5. Redis可视化客户端管理Web UI工具收集

    https://github.com/uglide/RedisDesktopManager(推荐,全平台支持的桌面UI工具) Web方案: https://github.com/ErikDubbelb ...

  6. DSP6748学习笔记-190116

    1. PSC是什么?电源和睡眠控制器.一个PSC模块由一个全局PSC和一组本地PSC组成,那么又是什么? PSCModuleControl(SOC_PSC_0_REGS, , PSC_POWERDOM ...

  7. 查询系统日期和时间(mysql)

    select current_date  --不带时间select sysdate()   或 SELECT NOW();  --带时间

  8. 用php实现简单的自制计算器

    存档: <!DOCTYPE html> <html> <head> <title>PHP实现计算器</title> </head> ...

  9. Python中的解决中文字符编码的问题

    python3中str默认为Unicode的编码格式 python2中str默认为bytes类型的编码格式 Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等 ...

  10. selenium自动化之js处理滚动条和元素聚焦

    selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 当我们页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接操作的,会报元素不可见异常的.这时候需要借助滚动 ...