http://codeforces.com/problemset/problem/723/D

dfs找出每个湖,保存坐标和大小,按大小排序,填充湖即可,注意湖的数量最多会有1250个。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define INF 0x3f3f3f3f
using namespace std; int n,m,k,dir[][] = {-,,,-,,,,},ok,cnt = ,sizee,vis[][] = {};
char mp[][]; struct lake
{
int x,y,cnt;
}l[]; bool cmp(struct lake a,struct lake b)
{
return a.cnt < b.cnt;
} void dfs1(int x,int y)
{
vis[x][y] = ;
sizee++;
for(int i = ;i < ;i++)
{
int xx = x+dir[i][],yy = y+dir[i][];
if(xx < || yy < || xx >= n || yy >= m)
{
ok = ;
continue;
}
if(mp[xx][yy] == '*' || vis[xx][yy]) continue; dfs1(xx,yy);
}
} void dfs2(int x,int y)
{
mp[x][y] = '*';
for(int i = ;i < ;i++)
{
int xx = x+dir[i][],yy = y+dir[i][];
if(xx < || yy < || xx >= n || yy >= m) continue;
if(!vis[xx][yy]) continue;
vis[xx][yy] = ;
dfs2(xx,yy);
}
} int main()
{
scanf("%d%d%d",&n,&m,&k);
getchar();
int x = ;
while(gets(mp[x++]));
for(int i = ;i < n;i++)
{
for(int j = ;j < m;j++)
{
sizee = ;
ok = ;
if(mp[i][j] == '.' && !vis[i][j])
{
dfs1(i,j);
if(ok)
{
l[cnt].x = i;
l[cnt].y = j;
l[cnt++].cnt = sizee;
}
}
}
}
sort(l,l+cnt,cmp);
int endd = cnt-k,ans = ;
for(int i = ;i < endd;i++)
{
ans += l[i].cnt;
dfs2(l[i].x,l[i].y);
}
printf("%d\n",ans);
for(int i = ;i < n;i++) puts(mp[i]);
return ;
}

Codeforces_723_D的更多相关文章

随机推荐

  1. Web开发学习目录

    1.MyBaits 1.1mybatis学习入门 1.2mybatis学习之CURD 1.3mybatis学习之连接池 1.4mybatis学习之动态SQL 1.5mybatis学习之多表操作 1.6 ...

  2. 《图解机器学习-杉山将著》读书笔记---CH2

    CH2 学习模型 重点提炼 学习模型作用: 使特定函数与数据集相近似 学习模型类型: 1.线性模型 (1)最简单的线性模型,缺点:只能表现线性的输入输出函数,不能很好地解决实际问题 (2)基于参数的线 ...

  3. sql中,case when的几种写法

    Province = CASE WHEN DCCity = '商丘' THEN '河南' WHEN DCCity <> '商丘' THEN '非河南' END, case ISNeed w ...

  4. vue引用外部JS的两种种方案

    前言 肯定会遇到没有npm化的库 自己写的js 方法 在Vue中该怎么引用呢 第一种 如果库是es6写的 就可以用import 引入 比如我自己写的http 封装接口的方法 就可以这样子导入哦 第二种 ...

  5. 如何高效实用 Git

    Git 工作流 只要项目是多人参与的,那么就需要使用正确的 Git 工作流程. 下面介绍一个简单有效的工作流程. 场景 假设有一个项目,要开发下一代的 Facebook,你就是这个项目的技术 lead ...

  6. 如何构建可伸缩的Web应用?

    为什么要构建可伸缩的Web应用? 想象一下,你的营销活动吸引了很多用户,在某个时候,应用必须同时为成千上万的用户提供服务,这么大的并发量,服务器的负载会很大,如果设计不当,系统将无法处理. 接下来发生 ...

  7. Oracle GoldenGate for BigData-Kafka

    0. Env list:Oracle Linux:6.10Oracle DB 11.2.0.4OGG4Ora:19.1OGG4BD:19.1 1.Install package for OCI ins ...

  8. 玩转Django2.0---Django笔记建站基础五(模板)

    第五章 模板 Django作为web框架,需要一种很便利的方法去动态地生成HTML网页,因此有了模板这个概念.模板包含所需HTML的部分代码以及一些特殊语法 Django可以配置一个或多个模板引擎(甚 ...

  9. 定时任务莫名停止,Spring 定时任务存在 Bug??

    Hello~各位读者新年好!这里楼下小黑哥给大家拜个年,祝大家蒸蒸日上烫烫烫,年年有余屯屯屯. 那年那 Bug 春节放假,小黑哥坐上高铁回家,突然想到一次生产问题.那是小黑哥参加工作第一年,那一年国庆 ...

  10. 初学者学Java常遇到的问题,我都给你回答了!

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:<学 ...