题目链接:http://codeforces.com/problemset/problem/723/D

题意:n*m的矩阵中,'*'代表陆地,'.'代表水,连在一起且不沿海的水形成湖泊。问最少填多少块water能使湖泊数量降到k个。

思路:本来最有把握的一次CF,D题小错误一直RE,C题最后也FST了......

先DFS出各湖泊的大小并用其中一个点存在结构体中,最后有num0个湖泊,再按湖泊的大小排序,需要填的湖泊为前n-k小的湖泊,简单DFS一下就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[55][55];
bool vis[55][55];
int turnx[10] = {-1,1,0,0};
int turny[10] = {0,0,-1,1};
int n,m,k,num,flag;
struct node
{
int num;
int x;
int y;
}q[3000];
bool cmp(node a,node b)
{
return a.num < b.num;
}
bool in(int x,int y)
{
if(x < 1 || y < 1 || x > n || y > m)
return 0;
return 1;
}
void dfs(int x,int y)
{
if(vis[x][y] || a[x][y] == '*')
return;
num++;
vis[x][y] = 1;
for(int i = 0; i < 4; i++)
{
int nx = x + turnx[i];
int ny = y + turny[i];
if(!in(nx,ny))
{
num = 0;
flag = 0;
continue;
}
if(a[nx][ny] == '*' || vis[nx][ny])
continue;
dfs(nx,ny);
}
}
void dfs1(int x,int y)
{
a[x][y] = '*';
for(int i = 0; i < 4; i++)
{
int nx = x + turnx[i];
int ny = y + turny[i];
if(a[nx][ny] == '*' )
continue;
dfs1(nx,ny);
}
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
int num0 = 0,ans = 0;
for(int i = 1; i <= n; i++)
scanf("%s",a[i] + 1);
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
num = 0,flag = 1;
if(!vis[i][j] && a[i][j] == '.')
{
dfs(i,j);
if(flag)
{
q[num0].num = num;
q[num0].x = i;
q[num0].y = j;
num0++;
}
}
}
}
sort(q,q+num0,cmp);
for(int i = 0; i < num0 - k; i++)
ans += q[i].num;
printf("%d\n",ans);
for(int i = 0; i < num0 - k; i++)
dfs1(q[i].x,q[i].y);
for(int i = 1; i <= n; i++)
printf("%s\n",a[i]+1);
return 0;
}

codeforces 723D(DFS)的更多相关文章

  1. codeforces 731C(DFS)

    题目链接:http://codeforces.com/contest/731/problem/C 题意:有n只袜子(1~n),k种颜色(1~k),在m天中,左脚穿下标为l,右脚穿下标为r的袜子,问最少 ...

  2. CodeForces - 95B(DFS)

    题目链接:http://codeforces.com/problemset/problem/95/B 题目大意:给你一个正整数n (1 ≤ n ≤ 10100000),求不大小于它的超级幸运数字(超级 ...

  3. CodeForces - 589J —(DFS)

    Masha has recently bought a cleaner robot, it can clean a floor without anybody's assistance. Schema ...

  4. CodeForces - 589J(DFS)

    题目链接:http://codeforces.com/problemset/problem/589/J 题目大意:一个机器人打扫一个密闭的房间,房间由一个矩形构成,'*'表示家具,'.'表示该位置为空 ...

  5. Codeforces 761E(DFS)

    E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. Codeforces 115A- Party(DFS)

    A. Party time limit per test 3 seconds memory limit per test 256 megabytes input standard input outp ...

  7. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

  8. LeetCode Subsets (DFS)

    题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...

  9. HDU 2553 N皇后问题(dfs)

    N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在 ...

随机推荐

  1. Python【3】-字典dic和集合set

    一.字典dict dict以键值对形式存储,创建方式是用大括号{}并用冒号分隔键和值. >>> d={'chen':60,'zhang':80} >>> print ...

  2. Xcode真机调试出现The account '***' has no team with ID '***'的解决方案

    前段时间,想用真机调试的时候出现 The account '***' has no team with ID '***'的问题, 以前页真机调试过,没有这种情况,于是我登陆开发者中心,进去发现说我的账 ...

  3. idea安装

  4. java selenium (六) XPath 定位

    xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. 阅读目录 什么是xpath xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面, ...

  5. 关于js异步上传文件

    好久没登录博客园了,今天来一发分享. 最近项目里有个需求,上传文件(好吧,这种需求很常见,这也不是第一次遇到了).当时第一想法就是直接用form表单提交(原谅我以前就是这么干的),不过表单里不仅有文件 ...

  6. CentOS x64上Matlab R2015b的镜像安装方法与卸载

    0. 原料 (1). CentOS_x64系统 CentOS 2.6.32-573.el6.x86_64 (2). Matlab  R2015b_glnxa64.iso,可以从百度网盘下载到:链接: ...

  7. js关闭子窗口,刷新父窗口

    父页面js:function btnAdd_onclick() {window.open("xxx.jsp", "","height=600, wid ...

  8. 数据表格datagrid内容整理

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. MySQL----This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery

    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使 ...

  10. what is service?

    SERVICE n.服务,服侍:服务业:维修服务:服役 vt.检修,维修:向…提供服务:保养:满足需要 adj.服务性的:耐用的:服现役的 更多详情:http://dict.baidu.com/s?w ...