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. php多进程总结

    本文部分来自网络参考,部分自己总结,由于一直保存在笔记中,并没有记录参考文章地址,如有侵权请通知删除.最近快被业务整疯了,这个等抽时间还需要好好的整理一番.   多进程--fork 场景:日常任务中, ...

  2. Java_Array数组1

    package org.array.demo; /** * 数组可以看成一组相同属性的元素的集合 * 1.静态声明 * 静态声明的格式: * 数组类型[] 标识 = new 数组类型[数组长度]; * ...

  3. $_SERVER 的用法

    PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root ...

  4. Linux C 字符串函数 strlen()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy() 详解

      strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计 ...

  5. POJ2914 (未解决)无向图最小割|Stoer-Wagner算法|模板

    还不是很懂,贴两篇学习的博客: http://www.hankcs.com/program/algorithm/poj-2914-minimum-cut.html http://blog.sina.c ...

  6. Cookie使用时需要注意个数及大小限制

    各浏览器对Cookie有一定的限制,在使用时需要格外注意. 各浏览器之间对cookie的不同限制:   IE6.0 IE7.0/8.0/9.0+ Opera FF Safari Chrome cook ...

  7. phpcms手机门户相关

    相关标签 {$WAP['sitename']}标题 {list_url(3)} 调取栏目链接 {template "wap","header"}{templat ...

  8. VMware中的Ubuntu网络设置

    网络配置: VMware安装后会有两个默认网卡,分别是VMnet8(192.168.83.1)和VMnet1(192.168.19.1),当然不同的机器上,这两个网卡的 IP会不同的.在windows ...

  9. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  10. espcms特殊标签

    内页banner图从后台调用分类图片 <div style="background:url({%$rootdir%}{%find:type class=$type.topid out= ...