CF723D 【Lakes in Berland】
题目链接
题解 CF723D 【Lakes in Berland】
首先将边界的水用bfs处理掉
再将中间的每一个湖泊处理出来,存入一个结构体内,结构体里记录湖泊大小和开始点
将湖泊排序从小往大填满,并利用开始点进行bfs改变地图
细节见代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int vis[][],mapp[][];
int dx[]={,-,,,};
int dy[]={,,,,-},cnt;
struct SYM{
int cc,sx,sy;
}lake[];
void bfs(int x,int y,int opt){
queue<int> qx,qy;int siz=;
if(opt==){ //处理边界
vis[x][y]=;qx.push(x);qy.push(y);
while(!qx.empty()){
int xx=qx.front(),yy=qy.front();qx.pop();qy.pop();
for(int i=;i<=;i++){
int nx=xx+dx[i],ny=yy+dy[i];
if(nx==||ny==||nx==n+||ny==m+) continue;
if(vis[nx][ny]) continue;
vis[nx][ny]=;
qx.push(nx);qy.push(ny);
}
}
}
if(opt==){ //处理湖泊
vis[x][y]=;qx.push(x);qy.push(y);
while(!qx.empty()){
int xx=qx.front(),yy=qy.front();qx.pop();qy.pop();
siz++;
for(int i=;i<=;i++){
int nx=xx+dx[i],ny=yy+dy[i];
if(nx==||ny==||nx==n+||ny==m+) continue;
if(vis[nx][ny]) continue;
vis[nx][ny]=;
qx.push(nx);qy.push(ny);
}
}
lake[++cnt].cc=siz;lake[cnt].sx=x;lake[cnt].sy=y; //存入湖泊大小和开始点
}
if(opt==){ //改变地图
mapp[x][y]=;qx.push(x);qy.push(y);
while(!qx.empty()){
int xx=qx.front(),yy=qy.front();qx.pop();qy.pop();
siz++;
for(int i=;i<=;i++){
int nx=xx+dx[i],ny=yy+dy[i];
if(nx==||ny==||nx==n+||ny==m+) continue;
if(mapp[nx][ny]) continue;
mapp[nx][ny]=;
qx.push(nx);qy.push(ny);
}
}
}
}
bool cmp(const SYM &a,const SYM &b){
return a.cc>b.cc;
}
int main(){
char c[];
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++){
scanf("%s",c);
for(int j=;j<m;j++)
mapp[i][j+]=vis[i][j+]=(c[j]=='*');
}
for(int i=;i<=n;i++){ //处理边界水
if(mapp[i][]==&&vis[i][]==) bfs(i,,);
if(mapp[i][m]==&&vis[i][m]==) bfs(i,m,);
}
for(int i=;i<=m;i++){
if(mapp[][i]==&&vis[][i]==) bfs(,i,);
if(mapp[n][i]==&&vis[n][i]==) bfs(n,i,);
}
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(!vis[i][j]) bfs(i,j,);
sort(lake+,lake+cnt+,cmp); //湖泊按大小排序
int ans=;
while(cnt>k){ //填湖泊
ans+=lake[cnt].cc;
bfs(lake[cnt].sx,lake[cnt].sy,); //改地图
cnt--;
}
printf("%d\n",ans);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(mapp[i][j]==) printf("*");
else printf(".");
}
printf("\n");
}
return ;
}
CF723D 【Lakes in Berland】的更多相关文章
- 【29.70%】【codeforces 723D】Lakes in Berland
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- cf723d Lakes in Berland
The map of Berland is a rectangle of the size n × m, which consists of cells of size 1 × 1. Each cel ...
- CF723D. Lakes in Berland[DFS floodfill]
D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 【夯实PHP基础】PHP数组,字符串,对象等基础面面观
本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...
- 【Java学习系列】第3课--Java 高级教程
本文地址 可以拜读: 从零开始学 Java 分享提纲: 1. Java数据结构 2. Java 集合框架 3. Java泛型 4. Java序列化 5. Java网络编程 6. Java发送Email ...
- 【夯实PHP基础】nginx php-fpm 输出php错误日志
本文地址 原文地址 分享提纲: 1.概述 2.解决办法(解决nginx下php-fpm不记录php错误日志) 1. 概述 nginx是一个web服务器,因此nginx的access日志只有对访问页面的 ...
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- SSFOJ P1453 子序列(一) 题解
每日一题 day61 打卡 Analysis las数组表示的是最近一个为j的位置为是什么. dp数组的含义是以str[i]为结尾的子序列数量. 于是有状态转移方程: dp[las[i][j]]+=d ...
- ubuntu及Cenos国内镜像下载
打开:https://man.linuxde.net/download/ CentOS 7提供了三种ISO镜像文件的下载: DVD ISO 标准安装版,一般下载这个就可以了(推荐) Everythin ...
- 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛
XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...
- Web 开发中 文件上传 是出现的:java.io.FileNotFoundException: (文件名、目录名或卷标语法不正确。)
<span style="font-family: Arial, Helvetica, sans-serif; "> </span> <span st ...
- Fluent Meshing生成interface
源视频链接: https://pan.baidu.com/s/1St4o-jB5KRfN5dLsvRe_vQ 提取码: 9rrr
- 记一次 HttpClient 死锁问题
原文:http://blog.kail.xyz/post/2019-04-21/tools/httpclient-lock.html 最近遇到一个使用 Apache HttpClient 过程中的问题 ...
- tomcat中文乱码
1. https://blog.csdn.net/qq_35038153/article/details/78430359 2. 1.修改apache-tomcat-9.0.14-windows-x6 ...
- webpack的带表达式require和require.context()方法
带表达式的 require 语句如果 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入 ...
- linux下如何使用adb连接在qemu中运行的安卓系统?
1. 运行安卓系统, 如下: $sudo qemu-system-x86_64 -m 4096 -boot d -enable-kvm -smp 3 -net nic -net user,hostfw ...
- 【转】PostgreSQL与MySQL比较
转自:https://www.cnblogs.com/geekmao/p/8541817.html PostgreSQL与MySQL比较 特性 MySQL PostgreSQL 实例 通过执行 M ...