Codeforces Round #222 (Div. 1) A. Maze

题意:有n*m矩阵,‘.‘为空地,‘#‘为墙。在空地上添加k堵墙使得最后空地联通。保证有解。

思路:随便送任何一个空地走,走到不能走为止,那么这个位置就可以设为‘X‘。然后回溯将路径上的空地都设为‘x‘。很明显最后的图是联通的。

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
char ch[501][501];
int vis[501][501];
void dfs(int x,int y)
{
    if(x<1||x>n||y<1||y>m||ch[x][y]!='.'||vis[x][y]) return ;
    vis[x][y]=1;
    dfs(x+1,y);dfs(x-1,y);
    dfs(x,y+1);dfs(x,y-1);
    if(k) ch[x][y]='X',k--;
}
int main()
{
    int i,j;
    cin>>n>>m>>k;
    for(i=1;i<=n;i++)
        cin>>ch[i]+1;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(ch[i][j]=='.'&&k) dfs(i,j);
    for(i=1;i<=n;i++) puts(ch[i]+1);
}
时间: 2024-10-10 10:22:56

Codeforces Round #222 (Div. 1) A. Maze的相关文章

Codeforces Round #222 (Div. 1)A. Maze(深搜)

传送门 Description Pavel loves grid mazes. A grid maze is an n × m rectangle maze where each cell is either empty, or is a wall. You can go from one cell to another only if both cells are empty and have a common side. Pavel drew a grid maze with all emp

Codeforces Round #222 (Div. 1) D. Developing Game 线段树有效区间合并

D. Developing Game Pavel is going to make a game of his dream. However, he knows that he can't make it on his own so he founded a development company and hired n workers of staff. Now he wants to pick n workers from the staff who will be directly res

Codeforces Round #614 (Div. 2) C. NEKO&#39;s Maze Game

题目链接:http://codeforces.com/contest/1293/problem/C 题意:给定n,q,即给定一个2*n的格子,有q个查询. 每个查询给定一个ri和ci,ri为1或2,ci在1到n之间,即给定一个(ri,ci),该点自该查询起状态进行转变(可经过/不可经过). 如某个查询给定1,2,即点(1,2)无法经过,若之后查询再次给定1,2,则该点(1,2)可以经过. 问能否从(1,1)走到(2,n),保证给定的查询不会经过起点和终点. 思路: 由于n和q最大都是1e5,所以

Codeforces Round #354 (Div. 2) ABCD

Codeforces Round #354 (Div. 2) Problems # Name     A Nicholas and Permutation standard input/output 1 s, 256 MB    x3384 B Pyramid of Glasses standard input/output 1 s, 256 MB    x1462 C Vasya and String standard input/output 1 s, 256 MB    x1393 D T

Codeforces Round #279 (Div. 2) ABCD

Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name     A Team Olympiad standard input/output 1 s, 256 MB  x2377 B Queue standard input/output 2 s, 256 MB  x1250 C Hacking Cypher standard input/output 1 s, 256 MB  x740 D Chocolate standard input/

Codeforces Round 239 Div 1

都怪自己太懒了 这段时间比赛参加了大部分,但是一直都没写题解,趁这几天没事,计划把这段时间的题解都补上. 上一次比赛(248)终于升到了div1,所以从这次开始就开始写div1了. A. Triangle There is a right triangle with legs of length a and b. Your task is to determine whether it is possible to locate the triangle on the plane in such

DFS/BFS Codeforces Round #301 (Div. 2) C. Ice Cave

题目传送门 1 /* 2 题意:告诉起点终点,踩一次, '.'变成'X',再踩一次,冰块破碎,问是否能使终点冰破碎 3 DFS:如题解所说,分三种情况:1. 如果两点重合,只要往外走一步再走回来就行了:2. 若两点相邻, 4 那么要不就是踩一脚就破了或者踩一脚走开再走回来踩一脚破了:3. 普通的搜索看是否能到达, 5 若能还是要讨论终点踩几脚的问题:) 6 DFS 耗时大,险些超时,可以用BFS来做 7 */ 8 #include <cstdio> 9 #include <algorit

Codeforces Round #243 (Div. 2) C. Sereja and Swaps

思路来源:http://blog.csdn.net/sf____/article/details/24626739 题目给出数据上限为200, 所以可以暴利所有区间. 解题思路: for i in range(n): for j in range(n): create priority_queue for w in range(k): if(Max.top > Min.top) SWAP(Max[element], Min[element]) 暴利枚举所有初始区间 [ i , j ] ,则剩下的

Codeforces Round #243 (Div. 1)-A,B,C-D

这场CF真是逗了... 因为早上7点起的,所以到做CF的时候已经17个小时没有休息了,再加上中午5小时的比赛. 头脑很不清晰.做第一个题的时候差点读成求最大字段和了.然后发现是水体,迅速A掉. 然后开始看了B题,第一遍没有看懂,此时大脑已经看不下去了.然后突然某个群说D是水题. 我去看了一下D,我去,D的题意好简单啊....于是,冥思苦想中.....一直到快要1点 的时候,还是没有结果...此时我感觉不行了..要放弃D,于是,又去看B.仔细读了读题目, 才发现,B题才是真正的水题..一阵郁闷啊.