D. Lakes in Berland
2017-07-19 16:52
309 查看
D. Lakes in Berland
题目地址:
http://codeforces.com/problemset/problem/723/D
AC代码
代码AC时间 2017-7-19 00:47
文章完成时间2017-7-19 16:50
题目地址:
http://codeforces.com/problemset/problem/723/D
AC代码
#include<cstdio> #include<algorithm> #include<string.h> using namespace std; struct node//存储某个湖的其中的一片水位置以及面积 { int x,y,s; }n[4000]; //设置一些需要的变量 char map[51][51];//湖的结构 int n1,m,k;//n1行 m列 k留下的湖的数量 int book[51][51],lake_num,lake_area,dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; int flag; int are; // int cmp(node a,node b) { return a.s<b.s; } //靠海湖设置flag标记 flag标记为0 则表示为靠海湖 不计入湖的数量 void dfs(int x,int y)//查找湖 并且记录湖的面积 { lake_area++; book[x][y] = 1; for(int i=0;i<4;i++) { int newx=dx[i]+x; int newy=dy[i]+y; if(newx < 0 || newy < 0 || newx > n1-1 || newy > m-1){ lake_area = 0,flag = 0; continue; } if(map[newx][newy] == '*' || book[newx][newy]) continue; dfs(newx,newy); } } void dfs1(int x,int y)//填湖 { map[x][y]='*'; for(int i=0;i<4;i++) { int newx=dx[i]+x; int newy=dy[i]+y; if(map[newx][newy]=='.') dfs1(newx,newy); } } int main() { scanf("%d%d%d",&n1,&m,&k); for(int i=0;i<n1;i++) { scanf("%s",map[i]); } //初始化 memset(book,0,sizeof(book)); lake_num=0; lake_area=0; // for(int i=0;i<n1;i++) { for(int j=0;j<m;j++) { lake_area=0;flag=1; if(map[i][j]=='.'&&!book[i][j]) { dfs(i,j); if(flag) { n[lake_num].x=i; n[lake_num].y=j; n[lake_num++].s=lake_area; } } } } //按照湖的面积进行排序 因为需啊求出填最小的水块数 所以先填水块少的湖 sort(n,n+lake_num,cmp); int summ=0; for(int i=0;i<lake_num-k;i++) { summ+=n[i].s; dfs1(n[i].x,n[i].y); } printf("%d\n",summ); for(int i=0;i<n1;i++) printf("%s\n",map[i]); return 0; }
代码AC时间 2017-7-19 00:47
文章完成时间2017-7-19 16:50
相关文章推荐
- Codeforces Round #375 (Div. 2) D. Lakes in Berland 贪心
- Codeforces Round #375 (Div. 2) D. Lakes in Berland
- Codeforces Round #375 (Div. 2) D. Lakes in Berland
- Codeforces Round #375 (Div. 2) D. Lakes in Berland
- 【Codeforces Round 375 (Div 2) D】【简单dfs】Lakes in Berland
- D.Lakes in Berland(DFS)
- Codeforces Round #375 (Div. 2) D. Lakes in Berland
- Codeforces Round #375 (Div. 2) D. Lakes in Berland 并查集
- Codeforces Round #375 (Div. 2) D. Lakes in Berland __ dfs+贪心+小根堆
- Codeforces Round #375 (Div. 2) D. Lakes in Berland 贪心
- 【29.70%】【codeforces 723D】Lakes in Berland
- Codeforces 723D - Lakes in Berland
- codeforces723D-Lakes in Berland-DFS
- Lakes in Berland(CF #375 Div. 2)
- codeforces723D Lakes in Berland 搜索
- codeforces 723D: Lakes in Berland
- CodeForces - 723D - D. Lakes in Berland
- Codeforces723 D. Lakes in Berland (BFS)
- F - Lakes in Berland
- CodeForces 723D-Lakes in Berland(BFS DFS)