codeforces723d
来源:互联网 发布:linux ftp和vsftp 编辑:程序博客网 时间:2024/06/10 00:50
这个题就是这么回事,先找dfs找湖的位置,和大小,然后,结构体排序,再来找k以上的湖,把他们给填了,就结了
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;struct node{ int x , y , sum;}str[3000];bool cmp(node a , node b){ return a.sum > b.sum;}char map[55][55];int n , m , k , num ,flag , vis[55][55] , d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};void dfs(int i , int j ){ //if(map[i][j] == '*'||vis[i][j]) return; num++; vis[i][j] = 1; for(int k = 0 ; k < 4 ; k++){ //printf("i = %d\n",i); int x = d[k][0] + i; int y = d[k][1] + j; if(x < 0 || y < 0 || x >= n || y >= m){ flag = 0;//flag是用来看这条支路是否出界,如果出界,则这条子路是不可用的,num也一样 continue; } if(map[x][y] == '*'||vis[x][y]) continue; //printf("x = %d y = %d",x, y); dfs(x , y); }}void dfsl(int i , int j){ if(map[i][j] == '.') map[i][j] = '*'; for(int k = 0 ; k < 4 ; k++){ int x = i + d[k][0]; int y = j + d[k][1]; if(x >= n || y >= m || x < 0 || y < 0 || map[x][y] == '*'){ continue; } //if(x == 1 &&y == 2) //printf("i = %d j = %d",i ,j); dfsl(x,y); }}int main(){ scanf("%d %d %d",&n , &m , &k); for(int i = 0 ; i < n ; i++) scanf("%s",map[i]); //printf("asdf"); int cnt = -1; for(int i = 0 ; i < n ; i++){//先dfs找一遍,湖的位置和数目 for(int j = 0 ; j < m ; j++){ //printf("!!\n"); num = 0,flag = 1; if(!vis[i][j] && map[i][j] == '.'){ //printf("6\n"); dfs(i,j); if(flag){ str[++cnt].sum = num; str[cnt].x = i; str[cnt].y = j; } } } } //printf("**\n"); sort(str , str + cnt + 1,cmp); int ans = 0; for(int i = k ; i <= cnt ; i++){//然后再找各种来更改 ans += str[i].sum; //printf("x = %d y = %d\n",str[i].x,str[i].y); dfsl(str[i].x , str[i].y);//把湖都变成土 } printf("%d\n",ans); for(int i = 0 ; i < n ; i++) puts(map[i]); printf("\n"); return 0;}
其实d也不是很难,我感觉以后打个rating1900还是可以的
0 0
- codeforces723d
- codeforces723D-Lakes in Berland-DFS
- codeforces723D Lakes in Berland 搜索
- codeforces723D.Lakes in Berland(dfs)
- (剑指Offer)面试题59:对称的二叉树
- 第62篇Chrome扩展蓝牙开发(二)
- inline内联函数
- Linux中C语言的预处理
- Chapter 4 前后查找
- codeforces723d
- 快速排序Sort调用
- 一个好用的Tag函数
- python3的虚拟环境
- 基础的 Linux 网络命令,你值得拥有
- 99. Recover Binary Search Tree
- 批量重命名文件名
- json、gson、fastjson的简单用法
- Android绘制闹钟效果