题意:

就是给你一个n行m列的矩形,后面将会有q次操作,每次操作会输入x,y表示要击碎第x行第y列的石块,当击碎它之后还去判断一下周围石块是否牢固

如果一个石块的左右两边至少一个已经被击碎且上下也至少一个被击碎,那么这个石块就是不牢固的,可以把这个石块也击碎

对于每一对x,y;要输出一个整数表示此次操作击碎石块多少个

题解:

对于每输入的一对x,y;先判断这个点的石块还在不在了,不在就输出0,在的话标记一下,在以此处为起点开始bfs搜索,搜索过程中经过的点也要标记

再按照石块是否牢固的判断方法对搜索过程中的石块进行判断

代码:

 1 #include<stdio.h>
2 #include<string.h>
3 #include<iostream>
4 #include<algorithm>
5 #include<vector>
6 #include<queue>
7 using namespace std;
8 const int INF=0x3f3f3f3f;
9 const int maxn=2505;
10 typedef long long ll;
11 struct shudui
12 {
13 int x,y;
14 } str1,str2;
15 int p[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
16 int n,m,w[maxn][maxn],xx[maxn],yy[maxn];
17 queue<shudui>r;
18 bool panduan(int y,int x)
19 {
20 int flag=0;
21 if(yy[y])
22 {
23 if(xx[x])
24 return 0;
25 else return 1;
26 }
27 else return 1;
28 }
29 int bfs(int ans)
30 {
31 while(!r.empty())
32 {
33 str1=r.front();
34 r.pop();
35 for(int i=0; i<4; ++i)
36 {
37 int x=str2.x=str1.x+p[i][0];
38 int y=str2.y=str1.y+p[i][1];
39 if(x<1 || y<1 || x>m || y>n || w[y][x])
40 {
41 continue;
42 }
43 if((w[y-1][x] || w[y+1][x]) && (w[y][x+1] || w[y][x-1]))
44 {
45 ans++;
46 w[y][x]=1;
47 r.push(str2);
48 }
49 }
50 }
51 return ans;
52 }
53 int v[maxn];
54 int main()
55 {
56 int t;
57 scanf("%d",&t);
58 while(t--)
59 {
60 int q;
61 memset(yy,0,sizeof(yy));
62 memset(xx,0,sizeof(xx));
63 memset(w,0,sizeof(w));
64 while(!r.empty()) r.pop();
65 scanf("%d%d%d",&n,&m,&q);
66 for(int j=1; j<=q; ++j)
67 {
68 int x,y;
69 scanf("%d%d",&y,&x);
70 int ans=0;
71 if(!w[y][x])
72 {
73 str2.x=x;
74 str2.y=y;
75 r.push(str2);
76 w[y][x]=1;
77 ans=bfs(1);
78 }
79 printf("%d\n",ans);
80 }
81 }
82 return 0;
83 }

hdu-6699 Block Breaker的更多相关文章

  1. Block Breaker HDU - 6699(深搜,水,写下涨涨记性)

    Problem Description Given a rectangle frame of size n×m. Initially, the frame is strewn with n×m squ ...

  2. [dfs] HDU 2019 Multi-University Training Contest 10 - Block Breaker

    Block Breaker Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)T ...

  3. 2019 Multi-University Training Contest 10 I Block Breaker

    Problem Description Given a rectangle frame of size n×m. Initially, the frame is strewn with n×m squ ...

  4. hdu多校第十场 1009 (hdu6699) Block Breaker bfs/模拟

    题意: 紧密排列的方块因为摩擦力一个一个稳定地挤在一起,但当一个方块的四个邻居中,上下两个至少空缺一个,左右两个至少空缺一个,则这个方块也将掉落. 每次锤掉一个方块,求多少个方块受牵连落下. 题解: ...

  5. 【HDOJ6699】Block Breaker(模拟)

    题意:给定一个n*m的网格块,如果一个块水平或垂直方向没有相邻支撑就会掉下去 有q次询问,每次会掉下去一块,问连锁反应新掉下的块数 n,m<=2e3,q<=1e5 思路: #include ...

  6. hdu6699Block Breaker

    Problem Description Given a rectangle frame of size n×m. Initially, the frame is strewn with n×m squ ...

  7. 2019DX#10

    Solved Pro.ID Title Ratio(Accepted / Submitted)   1001 Minimum Spanning Trees 22.22%(2/9)   1002 Lin ...

  8. 2019 Multi-University Training Contest 10

    目录 Contest Info Solutions C - Valentine's Day D - Play Games with Rounddog E - Welcome Party G - Clo ...

  9. Python游戏编程入门 中文pdf扫描版|网盘下载内附地址提取码|

    Python是一种解释型.面向对象.动态数据类型的程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Python开发精彩游戏所需的[]为重要的该你那.本书不 ...

随机推荐

  1. 使用Jenkins+Pipline 持构建自动化部署之安卓源码打包、测试、邮件通知

    一.引言 Jenkins 2.x的精髓是Pipeline as Code,那为什么要用Pipeline呢?jenkins1.0也能实现自动化构建,但Pipeline能够将以前project中的配置信息 ...

  2. Linux应急响应--入侵排查

    1.入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空,相关命令示例: ll -h /var/log/*  系统日志一般都存在/var/log下常用的系统日志如下:核心启动日志: ...

  3. 【Oracle LISTNER】oracle Listener 宕机解决办法

    今天想起了很久没用的oracle库,用plsql尝试连接,发现报超时错误,以为是偶然,多次尝试连接,发现还是超时,于是登录到系统中,查看数据库情况,发现正常查询和修改添加,感觉不是数据库问题,查看监听 ...

  4. C# 中的动态类型

    翻译自 Camilo Reyes 2018年10月15日的文章 <Working with the Dynamic Type in C#> [1] .NET 4 中引入了动态类型.动态对象 ...

  5. h5-video,视频在微信里变形、有黑边

    如这种情况: 微信可谓是video标签的重灾区,如果你兼容了安卓的微信,那么在其他浏览器一般也没问题了除了个别(IE:你们看我干吗?). 解决方案: <video src="video ...

  6. Flask的配置文件加载两种方式

    配置文件 1 基于全局变量 2 基于类的方式 配置文件的加载需要将配合文件的相对路径添加到app.config.from_object("文件路径"),类的方式也是一样,需要将类的 ...

  7. JS实现鼠标移入DIV随机变换颜色

    今天分享一个在 JavaScript中,实现一个鼠标移入可以随机变换颜色,本质就是js的随机数运用. 代码如下: <!DOCTYPE html> <html> <head ...

  8. 面试官:你说说ReentrantLock和Synchronized区别

    大家好!又和大家见面了.为了避免面试尴尬,今天同比较通俗语言和大家聊下ReentrantLock和Synchronized区别! 使用方式 Synchronized可以修饰实例方法,静态方法,代码块. ...

  9. linux GPU上多个buffer间的同步 —— ww_mutex、dma-fence的使用 笔记

    原文链接:https://www.cnblogs.com/yaongtime/p/14111134.html   WW-Mutexes   在GPU中一次Render可能会涉及到对多个buffer的引 ...

  10. JVM重新认识(一)oop-klass模型--HSDB使用验证

    一:oop-kclass模型 思考:我们平时写的java类编译成.class文件,JVM加载.class文件,那么加载.class文件之后在JVM中就是oop-kclass(C++)模型形式存在的. ...