UVA11625_Lines of Containers
题意很简单,给你一个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的更多相关文章
- IBM Bluemix体验:Containers持久存储
上一篇介绍了在Bluemix Containers服务中使用docker hub镜像和container的高可用配置.接下来我们尝试如何在容器中使用持久存储. 在Bluemix的Containers服 ...
- IBM Bluemix体验:Containers进阶
上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务.除了自定义镜像之外,Bluemix Containers还可以使用Do ...
- IBM Bluemix体验:Containers
国际版的Bluemix目前有三个region,US South,United Kingdom和Sydney.其中US South是功能最全的,UK其次,Sydney功能最少.Containers服务在 ...
- Docker-2:network containers
docker run -d -P --name web training/webapp python app.py # -name means give the to-be-run container ...
- Containers Reserved yarn resourcemanager
yarn rm的管理页面中显示了集群的概况,其中有一个指标叫Containers Reserved . 预留的容器,为什么会预留,集群的资源使用饱合,新的app请求的资源一般会进入pending状态, ...
- Docker Network containers
Network containers Estimated reading time: 5 minutes If you are working your way through the user gu ...
- docker不稳定 short running containers with -rm failed to destroy
正常运行以下命令 sudo docker run --rm busybox echo helloworld /var/log/upstart/docker.log 日志如下: // :: POST / ...
- 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 ...
- Effective Java 29 Consider typesafe heterogeneous containers
When a class literal is passed among methods to communicate both compile-time and runtime type infor ...
随机推荐
- asp.net self host and urlacl(解决UnHandledException Message:拒绝访问的问题)
命令提示符(管理员权限)需要添加的代码: netsh http add urlacl url=http://*:9999/ user=Everyone listen=yes 其中: url:代码中的u ...
- .net core 使用windows版redis
在项目中为了减少程序占用内存(将结果保存在全局变量里面,会占用内存),要求使用redis.开始了爬坑的过程.o(╥﹏╥)o c#操作redis 基本就这3中情况: ServiceStack.Redis ...
- Flutter系列博文链接
Flutter系列博文链接 ↓: Flutter基础篇: Flutter基础篇(1)-- 跨平台开发框架和工具集锦 Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法 Flutt ...
- 【excle基础】如何去掉excel某一列中的字段的空格
如图所示,想要去掉A列的空格: 查找空格,全部替换
- unity游戏在ios11上不显示泰语解决办法
最近在开发中遇到unity游戏在ios11上不显示泰语的问题,全部显示为方框内一个问号. 通过搜索发现这是Unity的一个bug,在2017.3中修复了 但升级unity风险很大,所以我采用了该文中提 ...
- python编辑三级目录
一.需求分析 三级目录要能够实现以下要求: 显示根目录,任何子目录中都可以通过输入b字符来返回根目录 任何子目录中都可以通过输入q字符来返回上一级目录 主目录进入子目录后,系统能够打印子目录,根据指打 ...
- Pycharm 2018.2.1-2018.1
请支持正版,谢谢! 下载激活包 激活包地址 解压后会得到两个包: JetbrainsCrack-2.10-release-enc.jar JetbrainsCrack-3.1-release-enc. ...
- 高可用Kubernetes集群-1. 集群环境
参考文档: 部署kubernetes集群1:https://github.com/opsnull/follow-me-install-kubernetes-cluster 部署kubernetes集群 ...
- 论文笔记:Visual Object Tracking based on Adaptive Siamese and Motion Estimation Network
Visual Object Tracking based on Adaptive Siamese and Motion Estimation 本文提出一种利用上一帧目标位置坐标,在本帧中找出目标可能出 ...
- [笔记] postgresql 流复制(streaming replication)
基本环境说明: os:FreeBSD 9.3 postgresql version: master:192.168.56.101 standby:192.168.56.102 安装过程略,基于pkg包 ...