CF192div2-C - Purification
题意:
从给定的图中找出某些点,这些点能够消除同一行和同一列的“怪物”。求使得最少的点的位置。
关键:要想消除整张的图的妖怪,必须选中n个点(对于n行n列来说)!!!!!!!!!!!
做法:对于每一行来说都要被消去,则每一行都至少要有一个 ‘ . ’;另外就是如果这种方法不行,则看每一列。
如果每一列都有一个 ' . ',同样也是可行的。
#include<stdio.h>
#include<string.h> const int maxn = ;
char mat[ maxn ][ maxn ];
bool vis[ maxn ][ maxn ];
struct node{
int x,y;
}ans[ maxn<< ]; bool judge( int n ){
for( int i=;i<=n;i++ ){
for( int j=;j<=n;j++ ){
if( vis[i][j]==false )
return false;
}
}
return true;
} int main(){
int n;
while( scanf("%d",&n)== ){
for( int i=;i<=n;i++ ){
scanf("%s",mat[i]+);
}
memset( vis,false,sizeof( vis ) );
int cnt = ;
for( int i=;i<=n;i++ ){
int fy = -;
for( int j=;j<=n;j++ ){
if( mat[i][j]=='.' ){
fy = j;
break;
}
}
if( fy==- )
continue;
for( int k=;k<=n;k++ ){
vis[ i ][ k ] = true;
vis[ k ][ fy ] = true;
}
ans[cnt].x = i;
ans[cnt].y = fy;
cnt++;
}//each row need one '.'
/*if( cnt==inf ){
printf("-1\n");
continue;
}*/
if( judge(n)==true ){
for( int i=;i<cnt;i++ )
printf("%d %d\n",ans[i].x,ans[i].y);
continue;
}
cnt = ;
memset( vis,false,sizeof( vis ) );
for( int i=;i<=n;i++ ){
int fx = -;
for( int j=;j<=n;j++ ){
if( mat[j][i]=='.' ){
fx = j;
break;
}
}
if( fx==- )
continue;
for( int k=;k<=n;k++ ){
vis[k][i] = true;
vis[fx][k] = true;
}
ans[cnt].x = fx;
ans[cnt].y = i;
cnt++;
}
if( judge(n)==true ){
for( int i=;i<cnt;i++ )
printf("%d %d\n",ans[i].x,ans[i].y);
continue;
}
printf("-1\n");
}
return ;
}
CF192div2-C - Purification的更多相关文章
- Codeforces Round #192 (Div. 1) A. Purification 贪心
A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...
- CF330 C. Purification 认真想后就成水题了
C. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- cf C. Purification
http://codeforces.com/contest/330/problem/C 这道题分三种情况.有一行全是E,有一列全是E,还有一种为无解的情况. #include <cstdio&g ...
- 论文笔记:Joint Embeddings of Shapes and Images via CNN Image Purification
今天分享的这篇论文是 SIGGRAPH 2015 的入选论文,标题比较长,但它做的事情其实很简单:通过一张图片,找到和这张图片最相似的 3D 形状
- Codeforces Round #192 (Div. 2) (329A)C.Purification
题意: 在一个正常的点可以净化该行该列的所有细胞,判断是否可以净化所有的细胞,并且输出所选的点. 思路: 如果可以的话,一定会选n个点. 先判断每一行是否有正常细胞,然后判断每一列是否有,如果都没有肯 ...
- 给你的应用“一只”智慧的眼睛 —— Barcode常识普及以及识别信息处理
在“如何用MediaCapture解决二维码扫描问题”这篇文章中,我们通过“成像”.“截图”与“识别”三个步骤介绍了使用MediaCapture扫码的主要过程及注意事项.本文主要针对“识别”的过程,对 ...
- lncRNA研究
------------------------------- Long noncoding RNAs are rarely translated in two human cell lines. ( ...
- ctDNA 相关网站-liquid-biopsy
http://www.gene-quantification.de/liquid-biopsy.html Liquid Biopsy -- Definitions Liquid Biopsy -- r ...
- PacBio下机数据解读
今天被人问起如何看懂三代的下机数据,虽然解决了别人的问题,但感觉自己还是没有搞透. 基本的目录结构: |-- HG002new_O1l_BP_P6_021315b_MB_100pM | |-- D01 ...
随机推荐
- 页面javascript 和jquery 的一些用法
confirm:提交之前的提示验证 if(confirm("确认是否提交?")){ alert("确认提交..."); } input按钮的禁用: $(&quo ...
- ping 命令详解
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说"ping一下某机器,看是不是开着".不能打开网页时会说"你先ping网关地址 ...
- plsql导入导出表
原来总是直接 tools->import talbes->Oracle Import结果发现有的时候会出错:有的表不能正确导入, baidu+googel解决办法如下: 导出步骤: 1 t ...
- CheckSum
1.What is Checksum? A check sum is basically a value that is computed from data packet to check its ...
- WIX Custom Action (immediate, deffered, rollback)
Following content is directly reprinted from From MSI to WiX, Part 19 - The Art of Custom Action, Pa ...
- MySql的安装与使用
今天因为毕业设计要用到MySql数据库,所以就准备自己安装一个MySQL数据库,但是因为MySQL Install MSI只有32位,所以最后选择使用Windows (x86, 64-bit), ZI ...
- opensuse13.1 双屏幕扩展
最近搞一项j2eeweb工程,想要使用Linux平台编写程序.对比Ubuntu 14.04.Redhat.openSUSE,选择了最后这个. 安装的时候将/boot只分了100M,后来空间不足软件都安 ...
- jquery.animate用法
<!DOCTYPE html><html><head><script src="http://libs.baidu.com/jquery/1.10. ...
- node.js里的forEach()也是异步的吗?
博客已经迁移到www.imyzf.com,本站不再更新,请谅解! node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作.当然,node ...
- PHP学习心得(二)——实用脚本
<?php 来表示 PHP 标识符的起始,然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式 调用函数phpinfo(),将会看到很多自己系统的信息,以及预定义变量 ...