1、CF #375 (Div. 2)  D. Lakes in Berland

2、总结:麻烦的bfs,但其实很水。。

3、题意:n*m的陆地与水泽,水泽在边界表示连通海洋。最后要剩k个湖,总要填掉多少个湖,然后输出。

#include<bits/stdc++.h>
#define F(i,a,b) for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
using namespace std;
const int N=,MAX=;
struct Node
{
int i,j,num;
bool operator < (const Node &a)const{
return num>a.num;
}
}; int n,m,k,num,flag;
int diri[]={,,,-};
int dirj[]={,-,,};
int vis[][];
char mapn[][]; bool charge(Node e)
{
if(mapn[e.i][e.j]=='.'&&e.i>=&&e.i<n&&e.j>=&&e.j<m&&!vis[e.i][e.j])
return true;
return false;
} bool charge2(Node e)
{
if(e.i==||e.i==n-||e.j==||e.j==m-)
return true;
return false;
} void bfs(int i,int j)
{
queue<Node>Q;
Node st,en;
st.i=i,st.j=j;
vis[i][j]=;
Q.push(st);
if(charge2(st)){flag=;}
while(!Q.empty())
{
st=Q.front();Q.pop();
F(l,,){
en.i=st.i+diri[l];
en.j=st.j+dirj[l];
if(charge(en)){
if(charge2(en))flag=;
vis[en.i][en.j]=;
Q.push(en);
num++;
}
}
} } void bfs2(int i,int j)
{
queue<Node>Q;
Node st,en;
st.i=i,st.j=j;
vis[i][j]=;
Q.push(st);
while(!Q.empty())
{
st=Q.front();Q.pop();
F(l,,){
en.i=st.i+diri[l];
en.j=st.j+dirj[l];
if(mapn[en.i][en.j]=='.'){
mapn[en.i][en.j]='*';
Q.push(en);
}
} }
} int main()
{
while(~scanf("%d%d%d",&n,&m,&k))
{
int num1=;
priority_queue<Node>Q;
mes(vis,);
F(i,,n)scanf("%s",mapn[i]);
F(i,,n) F(j,,m){
if(mapn[i][j]=='.'&&i>=&&i<n&&j>=&&j<m&&!vis[i][j]){
num=,flag=;
bfs(i,j);
if(flag){
num1++;
Node ans;ans.i=i,ans.j=j,ans.num=num;
Q.push(ans);
}
}
}
mes(vis,);
int sum=;
num1-=k;
while(num1--){
Node ans=Q.top();Q.pop();
sum+=ans.num;
mapn[ans.i][ans.j]='*';
bfs2(ans.i,ans.j);
}
cout<<sum<<endl;
F(i,,n)printf("%s\n",mapn[i]);
} return ;
}

CF #375 (Div. 2) D. bfs的更多相关文章

  1. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  2. CF #374 (Div. 2) D. 贪心,优先队列或set

    1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...

  3. CF #374 (Div. 2) C. Journey dp

    1.CF #374 (Div. 2)    C.  Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...

  4. CF #371 (Div. 2) C、map标记

    1.CF #371 (Div. 2)   C. Sonya and Queries  map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...

  5. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组

    题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...

  6. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)

    转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...

  7. cf 295 div 2 B (bfs)

    题意:给出 n.m 两数,可以对 n 进行两种操作 减一或者乘二,操作过程中 n 必须保证非负,问使 n 变为 m 至少需要几步操作. 这是我练水题的时候做到的,题目不难,只是我 bfs 一直没怎么用 ...

  8. CF 222 (DIV 1)

    A: 我是bfs出一颗树,然后删掉树后面的k个结点. 其实也可以直接bfs出一块连通的s - k个点,其余的.打X就可以了. 很水的题目. /* *************************** ...

  9. CF 520 B. Two Buttons(bfs)

    /*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...

随机推荐

  1. LoadRunner 函数之 web_custom_request

    Allows you to create a custom HTTP request with any method supported by HTTP. List of Attributes URL ...

  2. TCP中的RST复位信号

    TCP中的RST复位信号 在TCP协议中RST表示复位,用来关闭异常的连接,在TCP的设计中它是不可或缺的. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包.而接收 ...

  3. 【Bootstrap】Bootstrap-select多选下拉框实现

    目录 前言 需要引用的它们 核心选项 核心方法 实例应用 回到顶部 前言 项目中要实现多选,就想到用插件,选择了bootstrap-select. 附上官网api链接,http://silviomor ...

  4. 转】C#接口-显式接口和隐式接口的实现

    [转]C#接口-显式接口和隐式接口的实现 C#中对于接口的实现方式有隐式接口和显式接口两种: 类和接口都能调用到,事实上这就是“隐式接口实现”. 那么“显示接口实现”是神马模样呢? interface ...

  5. Java实现Excel的操作

    JAVA EXCEL API: 开源项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Ja ...

  6. PHP mysql与mysqli事务详解

    官方对PHP连接到MySQL数据库服务器的三种主要的API简介如下: http://php.net/manual/zh/mysqli.overview.php PHP mysql与mysqli事务详解 ...

  7. ms-dos中 MSCDEX命名语法详解

    一.MSCDEX的语法及参数:        MSCDEX可以在AUTOEXEC.BAT文件中自动加载,也可以在DOS的命令行中载入但要使用光驱,前提条件是在Config.sys文件中加载了光驱的驱动 ...

  8. Caffe学习系列(17): caffe源码分析 vector<Blob<Dtype>*>& bottom(转)

    转自:http://blog.csdn.net/qq_14975217/article/details/51524042 Blob:4个维度 n x c x h x w: bottom[0] .bot ...

  9. Qt5.7中使用MySQL Driver

    Qt5.7中使用MySQL Driver 1.使用环境 Qt5.7的安装安装就已经带了MySQL Driver,只需要在安装的时候选择一下即可. 如果没有安装,可以采取自己编译的方式. 在Qt的源码包 ...

  10. Func与Action

    平时我们如果要用到委托一般都是先声明一个委托类型,比如: private delegate string Say(); string说明适用于这个委托的方法的返回类型是string类型,委托名Say后 ...