题意:
从给定的图中找出某些点,这些点能够消除同一行和同一列的“怪物”。求使得最少的点的位置。
关键:要想消除整张的图的妖怪,必须选中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;
}
分享到:
相关推荐
题目来源:Codeforces Round #632 (Div. 2) 题目链接:F. Kate and imperfection 大致题意 给出一个数n,S为从1到n的集合,寻找长度为2,3,4…一直到长度为n的子集中任意两个数的最大公约数的最小值。举个例子有一...
今天CF被D恶心到了,写个题解重新整理下思路,(20开始想,25写完暴力代码,1.30才过,优化后的。。 核心思路就是在暴力的基础上进行组合数等差加速。 C(n-2,i-1)*C(j-1,n-2)*(i-1) __ j: n-1 -> m 我们发现内层...
- **功能**:(SP) ← (SP)-2, ((SP)+1,(SP)) ← (src) - **操作数**: - reg - seg - mem - **执行时间(时钟周期)**: - reg:11 - seg:10 - mem:16+EA - **字节数**: - reg:1 - seg:1 - mem:2...
**功能**: 类似于ADD指令,但还会考虑进位标志(CF)。 - **格式**: ADC D, S - **影响标志**: OF, SF, ZF, AF, PF, CF - **示例**: ADC AX, BX; AX + BX + CF → AX ##### INC (增1) **功能**: 将目的操作数(D)的值...
- (6) INC指令不更新CF,而ADD指令会。 - (7) 符号扩展并不改变数值大小,只是保留符号位。 - (8) CMP指令与SUB功能不同,不改变实际值,只更新标志位。 - (9) 逻辑运算不涉及CF和OF,但逻辑指令不会总是清零...
Const adOpenDynamic = 2 Const adOpenStatic = 3 '---- CursorOptionEnum Values ---- Const adHoldRecords = &H00000100 Const adMovePrevious = &H00000200 Const adAddNew = &H01000400 Const adDelete = &H...
- `ADC OP1,OP2`:将OP1与OP2以及CF(进位标志)相加。 - **格式**: - `ADD r1,r2`:将寄存器r1与r2相加。 - `ADD r,m`:将寄存器r与内存m相加。 - `ADD m,r`:将内存m与寄存器r相加。 - `ADD r,data`:将...
`ADC AX, BX`,将BX寄存器中的值加到AX寄存器中,并考虑CF标志位。 ##### SUB/SBB(减法指令) **功能**: 执行无符号或带借位的减法运算。 **语法**: - SUB OP1, OP2 - SBB OP1, OP2 **示例**: `SUB AX, BX`,将AX...
### 8086指令系统2 - 算术逻辑运算和移位指令的使用 #### 一、算术逻辑运算和移位指令概述 在8086微处理器架构中,算术逻辑运算和移位指令是非常重要的组成部分,它们主要用于处理数据的基本数学运算和逻辑操作。...
对于链接覆盖层`div2`,我们需要将其设置为绝对定位,并覆盖在Flash对象之上,同时设置`z-index`属性使其位于最上层,以便用户点击时能触发链接: ```html <div id="div2"> ...
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="${pageContext.request.contextPath }/common/plugins/calc/swflash.cab#version=6,0,0,0" id="BAPPFlash116526140886070277838"> value="$...
- `C`:绘制圆 - `L`:绘制直线 - `ML`:绘制多线 - `T`:输入文字 - `REC`:绘制矩形 - `A`:绘制圆弧 - `EL`:绘制椭圆 - `DO`:绘制圆环 - `REG`:创建区域 - `RAY`:绘制射线 - `XL`:绘制参照线 - ...
/* 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...
- **操作**: `Op1 := Op2, Op2 := Op1`。 - **标志**: 该指令不影响任何标志位。 3. **STC (Set Carry)** - **功能**: 设置进位标志。 - **格式**: `STC`。 - **描述**: 将进位标志(CF)设置为1。 - **操作**...
- DIV/IDIV:无符号和有符号除法,结果是商和余数。 这些指令是8088汇编语言的基础,理解并熟练运用它们对于编写有效的汇编代码至关重要。由于篇幅限制,这里只列举了主要的部分,实际上还有更多如逻辑运算、位操作...
**2. PUSH (Push)** - **助记符**: PUSH - **指令格式**: PUSH src - **操作**: 该指令将一个字大小的操作数压入堆栈。通常用于保存寄存器或局部变量的值。 - **示例**: PUSH BX; 将BX寄存器的值压入堆栈。 **3. ...
- **效果**:`Dest := [SP], INC SP` #### 数据类型转换指令 - **字节转字(CBW)** - **功能**:将AL寄存器中的有符号字节扩展至AX寄存器中的有符号字。 - **格式**:`CBW` - **效果**:`AX := AL (signed)` -...
" rowspan="2"><img src="img/003.jpg" width="104" height="626" /></td> ; width:792px; background:url(img/002.jpg) no-repeat"> <div style="padding-left:180px; padding-top:230px; font-...
2. **`iframe` 的 `z-index` 属性** - `<iframe>` 的 `z-index` 必须设置为负数,这样 `<div>` 才能正确地覆盖 `<iframe>`。 3. **尺寸匹配** - `<iframe>` 的 `top` 和 `left` 属性应设为 `0`,并且 `<iframe>` ...