`
xxx0624
  • 浏览: 31766 次
文章分类
社区版块
存档分类
最新评论

CF-div2-192-C

 
阅读更多

题意:

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

关键:要想消除整张的图的妖怪,必须选中n个点(对于n行n列来说)!!!!!!!!!!!

做法:对于每一行来说都要被消去,则每一行都至少要有一个 ‘ . ’;另外就是如果这种方法不行,则看每一列。

如果每一列都有一个 ' . ',同样也是可行的。


#include<stdio.h>
#include<string.h>

const int maxn = 105;
char mat[ maxn ][ maxn ];
bool vis[ maxn ][ maxn ];
struct node{
	int x,y;
}ans[ maxn<<2 ];

bool judge( int n ){
	for( int i=1;i<=n;i++ ){
		for( int j=1;j<=n;j++ ){
			if( vis[i][j]==false )
				return false;
		}
	}
	return true;
}

int main(){
	int n;
	while( scanf("%d",&n)==1 ){
		for( int i=1;i<=n;i++ ){
			scanf("%s",mat[i]+1);
		}
		memset( vis,false,sizeof( vis ) );
		int cnt = 0;
		for( int i=1;i<=n;i++ ){
			int fy = -1;
			for( int j=1;j<=n;j++ ){
				if( mat[i][j]=='.' ){
					fy = j;
					break;
				}
			}
			if( fy==-1 )
				continue;
			for( int k=1;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( judge(n)==true ){
			for( int i=0;i<cnt;i++ )
				printf("%d %d\n",ans[i].x,ans[i].y);
			continue;
		}
		cnt = 0;
		memset( vis,false,sizeof( vis ) );
		for( int i=1;i<=n;i++ ){
			int fx = -1;
			for( int j=1;j<=n;j++ ){
				if( mat[j][i]=='.' ){
					fx = j;
					break;
				}
			}
			if( fx==-1 ) 
				continue;
			for( int k=1;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=0;i<cnt;i++ )
				printf("%d %d\n",ans[i].x,ans[i].y);
			continue;
		}
		printf("-1\n");
	}
	return 0;
}


分享到:
评论

相关推荐

    CF-Kate and imperfection

    题目来源:Codeforces Round #632 (Div. 2) 题目链接:F. Kate and imperfection 大致题意 给出一个数n,S为从1到n的集合,寻找长度为2,3,4…一直到长度为n的子集中任意两个数的最大公约数的最小值。举个例子有一...

    Educational Codeforces Round 83 (Rated for Div. 2) D

    今天CF被D恶心到了,写个题解重新整理下思路,(20开始想,25写完暴力代码,1.30才过,优化后的。。 核心思路就是在暴力的基础上进行组合数等差加速。 C(n-2,i-1)*C(j-1,n-2)*(i-1) __ j: n-1 -&gt; m 我们发现内层...

    8086指令系统一览表

    - **功能**:(SP) ← (SP)-2, ((SP)+1,(SP)) ← (src) - **操作数**: - reg - seg - mem - **执行时间(时钟周期)**: - reg:11 - seg:10 - mem:16+EA - **字节数**: - reg:1 - seg:1 - mem:2...

    PC电脑汇编指令表.pdf

    **功能**: 类似于ADD指令,但还会考虑进位标志(CF)。 - **格式**: ADC D, S - **影响标志**: OF, SF, ZF, AF, PF, CF - **示例**: ADC AX, BX; AX + BX + CF → AX ##### INC (增1) **功能**: 将目的操作数(D)的值...

    通用数据处理指令习题答案分享.pdf

    - (6) INC指令不更新CF,而ADD指令会。 - (7) 符号扩展并不改变数值大小,只是保留符号位。 - (8) CMP指令与SUB功能不同,不改变实际值,只更新标志位。 - (9) 逻辑运算不涉及CF和OF,但逻辑指令不会总是清零...

    网上图书销售数据库+ASP

    Const adOpenDynamic = 2 Const adOpenStatic = 3 '---- CursorOptionEnum Values ---- Const adHoldRecords = &H00000100 Const adMovePrevious = &H00000200 Const adAddNew = &H01000400 Const adDelete = &H...

    汇编语言的指令全集.docx

    - `ADC OP1,OP2`:将OP1与OP2以及CF(进位标志)相加。 - **格式**: - `ADD r1,r2`:将寄存器r1与r2相加。 - `ADD r,m`:将寄存器r与内存m相加。 - `ADD m,r`:将内存m与寄存器r相加。 - `ADD r,data`:将...

    IBM-PC汇编语言指令集

    `ADC AX, BX`,将BX寄存器中的值加到AX寄存器中,并考虑CF标志位。 ##### SUB/SBB(减法指令) **功能**: 执行无符号或带借位的减法运算。 **语法**: - SUB OP1, OP2 - SBB OP1, OP2 **示例**: `SUB AX, BX`,将AX...

    8086指令系统2.

    ### 8086指令系统2 - 算术逻辑运算和移位指令的使用 #### 一、算术逻辑运算和移位指令概述 在8086微处理器架构中,算术逻辑运算和移位指令是非常重要的组成部分,它们主要用于处理数据的基本数学运算和逻辑操作。...

    通过html为FLASH加链接的实现代码(div层)

    对于链接覆盖层`div2`,我们需要将其设置为绝对定位,并覆盖在Flash对象之上,同时设置`z-index`属性使其位于最上层,以便用户点击时能触发链接: ```html &lt;div id="div2"&gt; ...

    flash-swf格式计算器使用Object控件嵌入html即可使用(文件内有dom)

    classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="${pageContext.request.contextPath }/common/plugins/calc/swflash.cab#version=6,0,0,0" id="BAPPFlash116526140886070277838"&gt; value="$...

    AUTOCAD和清华天河PCCAD的快捷键.doc

    - `C`:绘制圆 - `L`:绘制直线 - `ML`:绘制多线 - `T`:输入文字 - `REC`:绘制矩形 - `A`:绘制圆弧 - `EL`:绘制椭圆 - `DO`:绘制圆环 - `REG`:创建区域 - `RAY`:绘制射线 - `XL`:绘制参照线 - ...

    hook api lib.zip

    /* 9A */, C_DATA66+C_MEM2 /* 9B */, 0 /* 9C */, 0 /* 9D */, 0 /* 9E */, 0 /* 9F */, 0 /* A0 */, C_MEM67 /* A1 */, C_MEM67 /* A2 */, C_MEM67 /* A3 */, C_MEM67 /* A4 */, 0 /* A5 */, 0 /* A6...

    Intel操作码表

    - **操作**: `Op1 := Op2, Op2 := Op1`。 - **标志**: 该指令不影响任何标志位。 3. **STC (Set Carry)** - **功能**: 设置进位标志。 - **格式**: `STC`。 - **描述**: 将进位标志(CF)设置为1。 - **操作**...

    8088 汇编速查手册

    - DIV/IDIV:无符号和有符号除法,结果是商和余数。 这些指令是8088汇编语言的基础,理解并熟练运用它们对于编写有效的汇编代码至关重要。由于篇幅限制,这里只列举了主要的部分,实际上还有更多如逻辑运算、位操作...

    80868088汇编语言指令表

    **2. PUSH (Push)** - **助记符**: PUSH - **指令格式**: PUSH src - **操作**: 该指令将一个字大小的操作数压入堆栈。通常用于保存寄存器或局部变量的值。 - **示例**: PUSH BX; 将BX寄存器的值压入堆栈。 **3. ...

    英特尔CodeTable

    - **效果**:`Dest := [SP], INC SP` #### 数据类型转换指令 - **字节转字(CBW)** - **功能**:将AL寄存器中的有符号字节扩展至AX寄存器中的有符号字。 - **格式**:`CBW` - **效果**:`AX := AL (signed)` -...

    圣诞节 祝福网站 全部源码

    " rowspan="2"&gt;&lt;img src="img/003.jpg" width="104" height="626" /&gt;&lt;/td&gt; ; width:792px; background:url(img/002.jpg) no-repeat"&gt; &lt;div style="padding-left:180px; padding-top:230px; font-...

    object标签遮罩问题

    2. **`iframe` 的 `z-index` 属性** - `&lt;iframe&gt;` 的 `z-index` 必须设置为负数,这样 `&lt;div&gt;` 才能正确地覆盖 `&lt;iframe&gt;`。 3. **尺寸匹配** - `&lt;iframe&gt;` 的 `top` 和 `left` 属性应设为 `0`,并且 `&lt;iframe&gt;` ...

Global site tag (gtag.js) - Google Analytics