CF #375 (Div. 2) D. bfs
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的更多相关文章
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
- 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) ,问在每个区间里所有 ...
- 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 ...
- cf 295 div 2 B (bfs)
题意:给出 n.m 两数,可以对 n 进行两种操作 减一或者乘二,操作过程中 n 必须保证非负,问使 n 变为 m 至少需要几步操作. 这是我练水题的时候做到的,题目不难,只是我 bfs 一直没怎么用 ...
- CF 222 (DIV 1)
A: 我是bfs出一颗树,然后删掉树后面的k个结点. 其实也可以直接bfs出一块连通的s - k个点,其余的.打X就可以了. 很水的题目. /* *************************** ...
- CF 520 B. Two Buttons(bfs)
/*题意:一个数,就是输入的第一个数,让它变成第二个数最少用几步.可以点红色按钮,蓝色按钮来改变数字,红色:*2,蓝色:-1,如果变成负数,就变成原来的数.CF 520 B. Two Buttons思 ...
随机推荐
- Spring系列之依赖注入的方式
一.依赖注入方式 对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象 ...
- [Head First设计模式]生活中学设计模式——组合模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- unix编程书中的 ourhdr.h代码
真心不知到里面写的具体什么意思,先记下吧. /*Our own header, to be included after all standard system headers*/ #ifndef _ ...
- 常用的Firefox浏览器插件、Chrome浏览器插件收藏
[血的教训] 不要去下载“Firefox中国版(谋智网络)”,默认情况下会给你安装好多的莫名其妙的插件,推荐去Firefox官方下载原版. Firefox 原版官方网址: https://www.mo ...
- Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...
- 完整的PHP MYSQL数据库类
<?php class mysql { private $db_host; //数据库主机 private $db_user; //数据库用户名 private $db_ ...
- 垂直居中display:table;
父级元素 display:table: 子元素 display:table-cell:vertical-align:middle:
- Mac键盘图标与对应快捷按键标志汇总
Mac键盘图标与对应快捷按键 ⌘--Command () win键 ⌃ --Control ctrl键 ⌥--Option (alt) ⇧--Shift ⇪--Caps Lock fn--功能键就是 ...
- jsp 以及javabean内省技术
l JSP l JavaBean及内省 l EL表达式 1.1 上次课内容回顾 会话技术: Cookie:客户端技术.将数据保存在客户端浏览器上.Cookie是有大小和个数的限制. Session:服 ...
- python tornado 入门
#!/usr/bin/env python # coding:utf-8 import textwrap import tornado.httpserver import tornado.ioloop ...