思路

注:上图只是个例子,其实建图时 \(5\) 是不会连向 \(6\) 的

\(Code\)

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; int n , m , mp[55][55] , f[55 * 55][4] , tot , vis[55 * 55] , h[55 * 55] , rt; struct edge{
int to , nxt;
}e[55 * 55 * 2]; inline int getid(int x , int y){return (x - 1) * m + y;}
inline void add(int x , int y)
{
e[++tot] = (edge){y , h[x]};
h[x] = tot;
e[++tot] = (edge){x , h[y]};
h[y] = tot;
} inline void dfs(int x)
{
vis[x] = 1;
int mi = 1e7 , sum = 0;
for(register int i = h[x]; i; i = e[i].nxt)
{
int v = e[i].to;
if (vis[v]) continue;
dfs(v);
f[x][0] += f[v][1] , sum += min(min(f[v][0] , f[v][1]) , f[v][2]);
mi = min(mi , f[v][2] - min(min(f[v][0] , f[v][1]) , f[v][2]));
}
f[x][1] = sum + mi , f[x][2] = sum + 1; } struct node{
int i , j;
}d[55 * 55]; inline void bfs(int p , int q)
{
int head = 0 , tail = 1;
node now;
d[tail] = (node){p , q};
vis[getid(p , q)] = 1;
while (head < tail)
{
now = d[++head];
int i = now.i , j = now.j , l = j + 1;
while (mp[i][l] && !vis[getid(i , l)])
d[++tail] = (node){i , l} , vis[getid(i , l)] = 1 , add(getid(i , l) , getid(i , j)) , l++;
l = j - 1;
while (mp[i][l] && !vis[getid(i , l)])
d[++tail] = (node){i , l} , vis[getid(i , l)] = 1 , add(getid(i , l) , getid(i , j)) , l--;
l = i + 1;
while (mp[l][j] && !vis[getid(l , j)])
d[++tail] = (node){l , j} , vis[getid(l , j)] = 1 , add(getid(l , j) , getid(i , j)) , l++;
l = i - 1;
while (mp[l][j] && !vis[getid(l , j)])
d[++tail] = (node){l , j} , vis[getid(l , j)] = 1 , add(getid(l , j) , getid(i , j)) , l--;
}
} int main()
{
scanf("%d%d" , &n , &m);
char s[55];
for(register int i = 1; i <= n; i++)
{
scanf("%s" , s);
for(register int j = 0; j < m; j++)
mp[i][j + 1] = (s[j] == '.' ? 1 : 0);
}
for(register int i = 1; i <= n; i++)
{
int flag = 0;
for(register int j = 1; j <= m; j++)
if (mp[i][j] == 1)
{
int s = 0 , ss = 0;
if (mp[i + 1][j] || mp[i - 1][j]) s = 1;
if (mp[i][j - 1] || mp[i][j + 1]) ss = 1;
if (s && ss);
else rt = getid(i , j) , bfs(i , j) , flag = 1;
if (flag) break;
}
if (flag) break;
}
memset(vis , 0 , sizeof vis);
dfs(rt);
printf("%d" , min(f[rt][1] , f[rt][2]));
}

JZOJ 3252. 【GDOI三校联考】炸弹的更多相关文章

  1. 三校联考 Day3

    三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...

  2. HGOI20180823 三校联考

    首测:220qwq(算差的好吧) 后来改了一个地方:300qwq(算慢的好吧) std被踩qwq 注意:输入数据第一行忘记输入n,亲脑补 题解: 多项式除法(若最后除出的答案为1那么就是成功),对于f ...

  3. 【赛时总结】NOIP2018-三校联考1024

    ◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...

  4. 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你

    [五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...

  5. [2019多校联考(Round 6 T3)]脱单计划 (费用流)

    [2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...

  6. [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)

    [多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...

  7. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  8. [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)

    [多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...

  9. ZR10.1青岛集训三地联考

    ZR10.1青岛集训三地联考 谢谢dijk和smy A 题目大意: 已知斐波那契数列\(f\) 设 \[ F_i = \sum_{i = 0}^nf_if_{n - i} \] 求 \[ \sum_{ ...

  10. 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底

    [五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...

随机推荐

  1. apktool回编译报错

    报错 error: No resource identifier found for attribute 'XXX' in package 'XXX' 解决 将xml文件中 "http:// ...

  2. 【SQL基础】【记住重命名】高级查询:聚合函数(四舍五入)、分组过滤、排序、

    〇.概述 1.功能概述 高级查询:聚合函数(四舍五入).分组过滤.排序. 2.建表语句 drop table if exists user_profile; CREATE TABLE `user_pr ...

  3. USB限流,短路保护芯片IC

    USB口的输出电压一般是5V,在一些电源中,由于总电源5V是一个很大的总电源,再分别出很多路输出负载出来,例如5V10A,分成4个USB输出口,如果没加其他限流和保护的话,任意一个USB口的输出电流都 ...

  4. CORS与CSRF在Spring Security中的使用

    背景 在项目使用了Spring Security之后,很多接口无法访问了,从浏览器的网络调试窗看到的是CORS的报错和403的报错 分析 我们先来看一下CORS是什么,和它很相似的CSRF是什么,在S ...

  5. Zabbix6.0使用教程 (一)—zabbix新增功能介绍1

    使用zabbix的小伙伴应该都有关注到目前zabbix的大版本已经更新到了6.0,后面乐乐将会对如何使用zabbix6.0做一个使用教程的系列,大家可以持续关注,这篇我们主要聊聊zabbix6.0新增 ...

  6. 《HTTP权威指南》– 5.Web服务器

    Web服务器概念: 实现了HTTP和相关的TCP连接处理,负责管理Web服务器提供的资源,以及对Web服务器的配置.控制及扩展方面的管理. 各种不同的形式: 通过软件Web服务器:运行在标准的.有网络 ...

  7. C#中的进程检测退出事件和座位状态改变事件深入浅出谈谈EventHandler的使用

    关于进程 之前我在启动我的师生对讲的exe的时候,都是直接调用Process类的静态函数Process.Start(System.String AppPath,System.String Argume ...

  8. JavaScript:对象:如何去遍历输出一个对象的属性?语句for-in

    使用for-in的for循环语句,可以去遍历一个对象的属性,这类似于Java的增强for循环: 但是注意,这并不能遍历对象的所有属性,有些隐藏的属性,是无法遍历出来的,虽然我们可以通过控制台去查看这些 ...

  9. Python实验报告(第5章)

    实验5:字符串及正则表达式 一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例01:使用字符串拼 ...

  10. Spring中使用@RequestBody注解接收的实体类中的某些参数为null

    1.问题描述 我写完一个接口,在用postman测试的时候,发现其中有一个参数cEnterpriseId明明是有值的,但接口controller接收到的该参数为null,但其他参数都不为null的. ...