题意:

从给定的图中找出某些点,这些点能够消除同一行和同一列的“怪物”。求使得最少的点的位置。

关键:要想消除整张的图的妖怪,必须选中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的更多相关文章

  1. Codeforces Round #192 (Div. 1) A. Purification 贪心

    A. Purification Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/probl ...

  2. CF330 C. Purification 认真想后就成水题了

    C. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. cf C. Purification

    http://codeforces.com/contest/330/problem/C 这道题分三种情况.有一行全是E,有一列全是E,还有一种为无解的情况. #include <cstdio&g ...

  4. 论文笔记:Joint Embeddings of Shapes and Images via CNN Image Purification

    今天分享的这篇论文是 SIGGRAPH 2015 的入选论文,标题比较长,但它做的事情其实很简单:通过一张图片,找到和这张图片最相似的 3D 形状

  5. Codeforces Round #192 (Div. 2) (329A)C.Purification

    题意: 在一个正常的点可以净化该行该列的所有细胞,判断是否可以净化所有的细胞,并且输出所选的点. 思路: 如果可以的话,一定会选n个点. 先判断每一行是否有正常细胞,然后判断每一列是否有,如果都没有肯 ...

  6. 给你的应用“一只”智慧的眼睛 —— Barcode常识普及以及识别信息处理

    在“如何用MediaCapture解决二维码扫描问题”这篇文章中,我们通过“成像”.“截图”与“识别”三个步骤介绍了使用MediaCapture扫码的主要过程及注意事项.本文主要针对“识别”的过程,对 ...

  7. lncRNA研究

    ------------------------------- Long noncoding RNAs are rarely translated in two human cell lines. ( ...

  8. ctDNA 相关网站-liquid-biopsy

    http://www.gene-quantification.de/liquid-biopsy.html Liquid Biopsy -- Definitions Liquid Biopsy -- r ...

  9. PacBio下机数据解读

    今天被人问起如何看懂三代的下机数据,虽然解决了别人的问题,但感觉自己还是没有搞透. 基本的目录结构: |-- HG002new_O1l_BP_P6_021315b_MB_100pM | |-- D01 ...

随机推荐

  1. Log4net - 规则简介(续)

    之前对于配置并没有结束, 中间插了一个demo进去, 能够更直观的看到日志是怎么使用的. 这一篇, 我加了一些自己的东西进去, 可以更直观的来理解这些配置内容. 这里就继续介绍配置文件中的内容. 1. ...

  2. hasLayout与Block formatting contexts的学习(下)

    BFC布局规则: 内部的Box会在垂直方向,一个接一个地放置. Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠 每个元素的margin box的左边, ...

  3. xml约束DTD演示

    此演示xml和DTD在一个文件中 book.xml <?xml version="1.0" encoding="utf-8"?> <!DOCT ...

  4. 安装Numpy和matplotlib

    (1)测试程序     这是我从网上(http://www.open-open.com/lib/view/open1393488232380.html)找到的一个使用Numpy和matplotlib的 ...

  5. ACM——五位以内的对称素数

    http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1026 五位以内的对称素数 时间限制(普 ...

  6. JavaScript生成GUID的多种算法小结

    全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...

  7. 第五篇、C_二叉搜索树

    1.二叉树的查找功能的时间复杂度比链表的好 2.删除节点的稍微复杂点 >没有节点,直接删除 >只有左节点(或者右节点),直接用该节点的左节点(或者右节点)替代要删除的节点 >有左节点 ...

  8. UIMenuController/UIPasteboard(2) UITableView上实用剪贴板

    在UITableView上实用剪贴板有两种方法: 一.在tableView的代理方法中直接有三个有关剪贴板的方法. //某行是否允许show菜单 -(BOOL)tableView:(UITableVi ...

  9. OC1_汉字拼音转换 练习

    // // WordManager.h // OC1_汉字拼音转换 // // Created by zhangxueming on 15/4/27. // Copyright (c) 2015年 z ...

  10. seaJs 使用

    开始使用seajs的时候折磨了我好一阵.光是各种概念就让新手难理解.现在弄清楚了,上个实践以备忘.目录结构如图. 1.文件 sea.html   main.js  a.js  b.js  c.js 最 ...