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 ...
随机推荐
- 自定义控件之 RadioList
var RadioListObj = function (id, url) { this.URL = url;//radiobox source URL this.ID = id;//radioLis ...
- (BFS)poj2935-Basic Wall Maze
题目地址 题目与最基本的BFS迷宫的区别就是有一些障碍,可以通过建立三维数组,标记某个地方有障碍不能走.另一个点是输出路径,对此建立结构体时要建立一个pre变量,指向前一个的下标.这样回溯(方法十分经 ...
- Setup Spark source code environment
1. Install Java and set JAVA_HOME 2. Install Eclipse Juno Java IDE, Scala plugin and Scala Test 3. D ...
- Android M新特性之Behavior Changes
1.Runtime Permissions On your apps that target the M Preview release or higher, make sure to check f ...
- Notes of learning AutoLayout
在XCode5中,如果我们添加一个Button或者Label,或者其他的什么标准View,而不设置任何constraints,IB会自动生成constraints,而这些constraints是fix ...
- log4j.properties配置详解(转)
本篇文章转自http://it.oyksoft.com/log4j/ 非常感谢原创作者的辛勤编写与分享. 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders ...
- Error Handling
Use Exceptions Rather Than Return Codes Back in the distant past there were many languages that didn ...
- 动态添加Marquee标签,并动态赋值与属性
前台加载js $(function(){ var publishStr="<%=publishText%>" var marqueeStr=" <mar ...
- ural 1057Amount of Degrees ——数位DP
link:http://acm.timus.ru/problem.aspx?space=1&num=1057 论文: 浅谈数位类统计问题 刘聪 #include <iostream&g ...
- 第八课,T语言功能和参数(版本5.0)
功能的理解 功能是TC移动项目应用的基本模块,通过对功能模块的调用实现特定的功能.TC综合开发工具中的功能相当于其它高级语言的子程序,在其他高级语言中,比如C,C++中,称为函数.允许用户建立自己定义 ...