codeforces 723D(DFS)

时间:2022-09-25 18:44:38

题目链接:http://codeforces.com/problemset/problem/723/D

题意:n*m的矩阵中,'*'代表陆地,'.'代表水,连在一起且不沿海的水形成湖泊。问最少填多少块water能使湖泊数量降到k个。

思路:本来最有把握的一次CF,D题小错误一直RE,C题最后也FST了......

先DFS出各湖泊的大小并用其中一个点存在结构体中,最后有num0个湖泊,再按湖泊的大小排序,需要填的湖泊为前n-k小的湖泊,简单DFS一下就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[55][55];
bool vis[55][55];
int turnx[10] = {-1,1,0,0};
int turny[10] = {0,0,-1,1};
int n,m,k,num,flag;
struct node
{
int num;
int x;
int y;
}q[3000];
bool cmp(node a,node b)
{
return a.num < b.num;
}
bool in(int x,int y)
{
if(x < 1 || y < 1 || x > n || y > m)
return 0;
return 1;
}
void dfs(int x,int y)
{
if(vis[x][y] || a[x][y] == '*')
return;
num++;
vis[x][y] = 1;
for(int i = 0; i < 4; i++)
{
int nx = x + turnx[i];
int ny = y + turny[i];
if(!in(nx,ny))
{
num = 0;
flag = 0;
continue;
}
if(a[nx][ny] == '*' || vis[nx][ny])
continue;
dfs(nx,ny);
}
}
void dfs1(int x,int y)
{
a[x][y] = '*';
for(int i = 0; i < 4; i++)
{
int nx = x + turnx[i];
int ny = y + turny[i];
if(a[nx][ny] == '*' )
continue;
dfs1(nx,ny);
}
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
int num0 = 0,ans = 0;
for(int i = 1; i <= n; i++)
scanf("%s",a[i] + 1);
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
num = 0,flag = 1;
if(!vis[i][j] && a[i][j] == '.')
{
dfs(i,j);
if(flag)
{
q[num0].num = num;
q[num0].x = i;
q[num0].y = j;
num0++;
}
}
}
}
sort(q,q+num0,cmp);
for(int i = 0; i < num0 - k; i++)
ans += q[i].num;
printf("%d\n",ans);
for(int i = 0; i < num0 - k; i++)
dfs1(q[i].x,q[i].y);
for(int i = 1; i <= n; i++)
printf("%s\n",a[i]+1);
return 0;
}

codeforces 723D(DFS)的更多相关文章

  1. codeforces 731C(DFS)

    题目链接:http://codeforces.com/contest/731/problem/C 题意:有n只袜子(1~n),k种颜色(1~k),在m天中,左脚穿下标为l,右脚穿下标为r的袜子,问最少 ...

  2. CodeForces - 95B(DFS)

    题目链接:http://codeforces.com/problemset/problem/95/B 题目大意:给你一个正整数n (1 ≤ n ≤ 10100000),求不大小于它的超级幸运数字(超级 ...

  3. CodeForces - 589J —(DFS)

    Masha has recently bought a cleaner robot, it can clean a floor without anybody's assistance. Schema ...

  4. CodeForces - 589J(DFS)

    题目链接:http://codeforces.com/problemset/problem/589/J 题目大意:一个机器人打扫一个密闭的房间,房间由一个矩形构成,'*'表示家具,'.'表示该位置为空 ...

  5. Codeforces 761E(DFS)

    E. Dasha and Puzzle time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. Codeforces 115A- Party(DFS)

    A. Party time limit per test 3 seconds memory limit per test 256 megabytes input standard input outp ...

  7. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

  8. LeetCode Subsets (DFS)

    题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...

  9. HDU 2553 N皇后问题(dfs)

    N皇后问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在 ...

随机推荐

  1. &lbrack;转载&rsqb;SQL语句中的日期计算

    1. 本月的第一天SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0) 2. 本月的最后一天SELECT  dateadd(ms,-3,DATEADD( ...

  2. MySQL用户管理

    主要总结MySQL进行用户管理的基本实现,包含MySQL登录,添加用户,删除用户,为用户分配权限,移除某用户的权限,修改密码,查看权限等基本操作,所有命令均亲测实现.本博文是本人的劳动成果所得,在博客 ...

  3. linux的七大运行级别及级别修改

    运行级别     级别说明 0           所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别 1           单用户模式,用于系统维护,只有少数进程运行,同时所有服务也不 ...

  4. const和define的使用区别

    在PHP中(PHP 4及以后),我们可以使用函数define()来定义常量,例如: <?php define('PI',3.14159);  //定义一个名为PI的常量 echo PI;     ...

  5. utf8&plus;bom格式保存php curl乱码问题

    今天开发遇到一个php curl取数据乱码问题 不是gzip也不是编码设置问题 最后有一同事判断为utf8+bom保存数据原因,懒得深入了解utf8+bom,仅做记录 [root@centos5 ~] ...

  6. java-redis初探

    一.Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...

  7. Luogu P3412 仓鼠找&dollar;sugar&dollar; &dollar;II&dollar;

    Luogu P3412 仓鼠找\(sugar\) \(II\) 题目大意: 给定一棵\(n\)个点的树, 仓鼠每次移动都会等概率选择一个与当前点相邻的点,并移动到此点. 现在随机生成一个起点.一个终点 ...

  8. 老年OIer的Python实践记—— Codeforces Round &num;555 &lpar;Div&period; 3&rpar; solution

    对没错下面的代码全部是python 3(除了E的那个multiset) 题目链接:https://codeforces.com/contest/1157 A. Reachable Numbers 按位 ...

  9. 重写外部图片URL,变成自己的URL

     1.获取原图链接 上传一张图片文件到淘图,得到以下链接: https://img.alicdn.com/imgextra/i4/358272220/TB2hCqxmB8lpuFjSspaXXXJKp ...

  10. sparksql udf自定义函数中参数过多问题的解决

    在进行spark sql数据库操作中,常常需要一些spark系统本身不支持的函数,如获取某一列值中的字符串. 如要获取 “aaaakkkkk”中的第4-第8个字符. 针对这种需求,只有设置UDF来实现 ...