Codeforces 723d [暴力dfs]
/*
不要低头,不要放弃,不要气馁,不要慌张。
题意:
给n,m和k,n和m为所给矩阵的高和宽。k是要求最多剩下的湖的数量。
在所给的矩阵中,*代表陆地,.代表水。
湖的定义是一片连续的水(上下左右四个方向),并且水不含边界。
水含边界的情况被成为海。
问最少填多少湖的面积,使得湖的数量减少到k...
思路:
水dfs,记录有多少湖,并且记录每个湖的面积,然后排下序贪心就好。
坑:
做题一定别急一定别急一定别急一定知道自己写的是什么!!!!
*/
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,gg;
int zhx[]={-,,,};
int zhy[]={,,,-};
char pho[][];
bool vis[][];
int jilu[][];
struct st{
st(){}
st(int a,int b){
id=a;num=b;
}
int id;
int num;
};
vector<st>mv;
bool inmap(int x,int y){
if(x<||x>n||y<||y>m)return ;
return pho[x][y]=='.';
}
bool dfs(int x,int y){
vis[x][y]=;
jilu[x][y]=gg;
ans++;
bool ok=;
for(int i=;i<;i++){
int xx=x+zhx[i];
int yy=y+zhy[i];
if(inmap(xx,yy)&&!vis[xx][yy]){
ok&=dfs(xx,yy);
}
}
if(x==||x==n||y==||y==m)return ;
return ok;
}
bool cmp(st a,st b){
return a.num<b.num;
}
int main()
{
gg=;
int k;
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)scanf("%s",pho[i]+);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
if(vis[i][j]==&&pho[i][j]=='.'){
ans=;
gg++;
if(dfs(i,j))mv.push_back(st(gg,ans));
}
}
}
if(mv.size())sort(mv.begin(),mv.end(),cmp);
int zong=;
for(int i=;i<mv.size()-k;i++){
for(int j=;j<=n;j++){
for(int w=;w<=m;w++){
if(jilu[j][w]==mv[i].id)pho[j][w]='*';
}
}
zong+=mv[i].num;
}
printf("%d\n",zong);
for(int i=;i<=n;i++){
puts(pho[i]+);
}
}
Codeforces 723d [暴力dfs]的更多相关文章
- codeforces 723D(DFS)
题目链接:http://codeforces.com/problemset/problem/723/D 题意:n*m的矩阵中,'*'代表陆地,'.'代表水,连在一起且不沿海的水形成湖泊.问最少填多少块 ...
- A. The Fault in Our Cubes 暴力dfs
http://codeforces.com/gym/101257/problem/A 把它固定在(0,0, 0)到(2, 2, 2)上,每次都暴力dfs检查,不会超时的,因为规定在这个空间上,一不行, ...
- hihoCoder 1185 连通性·三(Tarjan缩点+暴力DFS)
#1185 : 连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出 ...
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- UVA129 暴力dfs,有许多值得学习的代码
紫书195 题目大意:给一个困难的串,困难的串的定义就是里面没有重复的串. 思路:不需要重新对之前的串进行判重,只需要对当前的加入的字符进行改变即可. 因为是判断字典序第k个的字符串,所以要多一个全局 ...
- 2018杭电多校第五场1002(暴力DFS【数位】,剪枝)
//never use translation#include<bits/stdc++.h>using namespace std;int k;char a[20];//储存每个数的数值i ...
- Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)
题目链接:http://codeforces.com/problemset/problem/686/C 给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b &l ...
- 【Codeforces 723D】Lakes in Berland (dfs)
海洋包围的小岛,岛内的有湖,'.'代表水,'*'代表陆地,给出的n*m的地图里至少有k个湖,求填掉面积尽量少的水,使得湖的数量正好为k. dfs找出所有水联通块,判断一下是否是湖(海水区非湖).将湖按 ...
- Codeforces Beta Round #37 C. Old Berland Language 暴力 dfs
C. Old Berland Language 题目连接: http://www.codeforces.com/contest/37/problem/C Description Berland sci ...
随机推荐
- 为什么使用 Bootstrap?
为什么使用 Bootstrap? 移动设备优先:自 Bootstrap 3 起,框架包含了贯穿于整个库的移动设备优先的样式. 浏览器支持:所有的主流浏览器都支持 Bootstrap. 容易上 ...
- 关于MVC
MVC,或多或少都有听说过.这个模式在客户端程序里面比较常见.以前有人老说mvc是什么设计模式之类.至少我理解的不是.我觉得 MVC是一种模块划分方法.根据它,我们可以快速地划分单独某个模块.比如排行 ...
- jQuery.ajax() 函数详解
jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...
- IIS 7.5 高并发参数配置
IIS 7.5 高并发参数配置 由于之前使用的是默认配置,服务器最多只能处理5000个同时请求,对于高并发请求,参照文档设置10万并发 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为 ...
- BackTrack5-r3安装前需要的准备及说明
一. 配置创建一个虚拟机,本教程用的是VMware-workstation-full-10.0.0,BT5-r3-GNOME-64镜像. 这里是BT5-r3-GNOME-64位种子:http://pa ...
- 上载android应用的apk文件变成了zip-网下转载的解决方案
下载android应用的apk文件变成了zip--网上转载的解决方案 下载android应用的apk文件变成了zip--网上转载的解决方案 解决方案一. 最近把开发的android应用放在公司网站上, ...
- 传智博客.NET培训第13季 Ajax教程(共十三季) 学习资源
http://wangpengnimei.ctfile.com/u/1235801/47146 传智博客.NET培训第13季 Ajax教程(十三季).rar 19
- 深入学习golang(1)—数组与切片
数据(array)与切片(slice) 数组声明: ArrayType = "[" ArrayLength "]" ElementType . 例如: va ...
- sqlserver08评估期已过的解决方法
打开sqlserver出现提示:评估期已过.有关如何升级的测试版软件的信息,请访问http://www.microsoft.com/sql/howtobuy 解决方法如下: 第一步:进入开始菜单--- ...
- sqlite入门
SQLite官网: https://www.sqlite.org/index.html 1. 下载请到https://www.sqlite.org/download.html下载相应平台的sqlite ...