题意:

就是给你一个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. JavaFX之班级未交作业统计

    前言 最近转移了系统平台,用上了Ubuntu1804版本系统,原来用C#写的Windows窗体软件也不能用了,而且自己在班级上每周都需要收作业,所以写了这个软件.这篇博客主要记录这个JavaFX应用的 ...

  2. python基础语法1-变量

    l Python基础语法1-变量 

  3. SQL Server解惑——查询条件IN中能否使用变量

    在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS (SELECT 1 FRO ...

  4. 【排序基础】1、选择排序法 - Selection Sort

    文章目录 选择排序法 - Selection Sort 为什么要学习O(n^2)的排序算法? 选择排序算法思想 操作:选择排序代码实现 选择排序法 - Selection Sort 简单记录-bobo ...

  5. 【Oracle】查询执行慢的sql

    查询执行最慢的sql select * from (select sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS "执行次数", round ...

  6. Jenkins自动部署spring boot

    Jenkins自动部署spring boot 背景介绍 本公司属于微小型企业,初期业务量不高,所有程序都写在一个maven项目里面,不过是多模块开发. 分了login模块,service模块,cms模 ...

  7. ctfhub技能树—密码口令—弱口令

    什么是弱口令? "弱口令(weak password) 没有严格和准确的定义,通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令. 弱口令指的是仅包含简单数字和 ...

  8. [Usaco2016 Dec]Counting Haybales

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4747 先将原数组排序,然后二分查找即可.时间复杂度\(O((N+Q)logN)\). #i ...

  9. Zju1100 Mondriaan

    题目描述 有一个m行n列的矩阵,用1*2的骨牌(可横放或竖放)完全覆盖,骨牌不能重叠,有多少种不同的覆盖的方法? 你只需要求出覆盖方法总数mod p的值即可. 输入格式 三个整数数n,m,p,m< ...

  10. OO第三次总结博客

    规格化设计的发展历史 (因为很难寻找,所以参考了下别的同学的调研结果) 规格化设计与结构化.模块化设计密不可分,伴随着OOP语言的发展,规格化设计思想逐渐形成体系,慢慢完善. 20世纪60年代,程序的 ...