题意:给定一个n*m的网格块,如果一个块水平或垂直方向没有相邻支撑就会掉下去

有q次询问,每次会掉下去一块,问连锁反应新掉下的块数

n,m<=2e3,q<=1e5

思路:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned int uint;
  5. typedef unsigned long long ull;
  6. typedef pair<int,int> PII;
  7. typedef pair<ll,ll> Pll;
  8. typedef vector<int> VI;
  9. typedef vector<PII> VII;
  10. #define N 2100
  11. #define M 4100000
  12. #define fi first
  13. #define se second
  14. #define MP make_pair
  15. #define pi acos(-1)
  16. #define mem(a,b) memset(a,b,sizeof(a))
  17. #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
  18. #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
  19. #define lowbit(x) x&(-x)
  20. #define Rand (rand()*(1<<16)+rand())
  21. #define id(x) ((x)<=B?(x):m-n/(x)+1)
  22. #define ls p<<1
  23. #define rs p<<1|1
  24.  
  25. const ll MOD=1e9+,inv2=(MOD+)/;
  26. double eps=1e-;
  27. int INF=1e9;
  28. int dx[]={-,,,};
  29. int dy[]={,,-,};
  30.  
  31. int b[N][N],n,m,s;
  32.  
  33. int read()
  34. {
  35. int v=,f=;
  36. char c=getchar();
  37. while(c<||<c) {if(c=='-') f=-; c=getchar();}
  38. while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
  39. return v*f;
  40. }
  41.  
  42. int isok(int x,int y)
  43. {
  44. if(x>=&&x<=n&&y>=&&y<=m) return ;
  45. return ;
  46. }
  47.  
  48. int drop(int x,int y)
  49. {
  50. int s1=,s2=;
  51. if(isok(x-,y)&&b[x-][y]==) s1++;
  52. if(isok(x+,y)&&b[x+][y]==) s1++;
  53. if(isok(x,y-)&&b[x][y-]==) s2++;
  54. if(isok(x,y+)&&b[x][y+]==) s2++;
  55. if(s1>&&s2>) return ;
  56. return ;
  57. }
  58.  
  59. void dfs(int x,int y)
  60. {
  61. b[x][y]=;
  62. s++;
  63. rep(i,,)
  64. {
  65. int tx=x+dx[i],ty=y+dy[i];
  66. if(isok(tx,ty)&&b[tx][ty]==&&drop(tx,ty)) dfs(tx,ty);
  67. }
  68. }
  69.  
  70. int main()
  71. {
  72. //freopen("1.in","r",stdin);
  73. //freopen("1.out","w",stdout);
  74.  
  75. int cas;
  76. scanf("%d",&cas);
  77.  
  78. while(cas--)
  79. {
  80. n=read(),m=read();
  81. int q=read();
  82. rep(i,,n)
  83. rep(j,,m) b[i][j]=;
  84. rep(i,,q)
  85. {
  86. int x=read(),y=read();
  87. s=;
  88. if(b[x][y]==) dfs(x,y);
  89. printf("%d\n",s);
  90. }
  91. }
  92.  
  93. return ;
  94. }

【HDOJ6699】Block Breaker(模拟)的更多相关文章

  1. [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 ...

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

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

  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. hdu-6699 Block Breaker

    题意: 就是给你一个n行m列的矩形,后面将会有q次操作,每次操作会输入x,y表示要击碎第x行第y列的石块,当击碎它之后还去判断一下周围石块是否牢固 如果一个石块的左右两边至少一个已经被击碎且上下也至少 ...

  6. 浅谈 block(1) – clang 改写后的 block 结构

    这几天为了巩固知识,从 iOS 的各个知识点开始学习,希望自己对每一个知识理解的更加深入的了解.这次来分享一下 block 的学习笔记. block 简介 block 被当做扩展特性而被加入 GCC ...

  7. hdu6699Block Breaker

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

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

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

  9. 装个蒜。学习下dispatch queue

    dispatch queue的真髓:能串行,能并行,能同步,能异步以及共享同一个线程池. 接口: GCD是基于C语言的APT.虽然最新的系统版本中GCD对象已经转成了Objective-C对象,但AP ...

随机推荐

  1. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_03 过滤器_2_FileNameFilter过滤器的使用和Lambda表达式

    复制一份上一节的代码 匿名内部类的形式 FilenameFilter 只有一个Accept方法.这样我们就可以使用lambda表达式 lambda表达式的前提条件 参数类型和,返回的大括号 都可以省掉 ...

  2. delphi 静态3维数组。 严重占用堆栈 切记。 应该用动态数组, 非要用静态数组的话, 要在编译器里 把 堆栈 调大

    delphi 代码正确, 但是运行就崩溃. 原因为 定义了  一些   静态3维数组. 应该扩大 软件的 堆栈 设置.    然后正常解决问题 静态3维数组.   严重占用堆栈   切记. 应该用动态 ...

  3. webpack构建项目连接本机IP仍无法访问问题

    通过连接IP地址,确定连接成功后仍无法访问本机运行项目,需要对项目配置进行修改,有两种情况: 第一种是在config/index.js,把module.exports={}中找到 host:'loca ...

  4. Ultra.Base

    winform 基础类库 https://github.com/ZixiangBoy/Ultra.Base

  5. 【SD系列】SAP 创建销售订单-用外部给号的方法步骤

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP 创建销售订单-用外部给号的方 ...

  6. Junit 3.8源码分析

    JUnit背景介绍 JUnit是由Erich Gamma和Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓的白 ...

  7. SVG.JS 画弧线

    需求描述: 使用svg.js,绘制一个弧线.下图绿色弧线. 准备工作: 1.了解SVG Path中的A指令 详细文档,请戳这里 给定x半径.y半径后,经过指定的两点,可以有2个椭圆,因此两点间有2条弧 ...

  8. oracle--本地网络配置tnsnames.ora和监听器listener.ora

    文件tnsnames.ora 是给orcl客户端使用 配置本地网络服务:(客户端) 第一种使用暴力方式直接操作: 修改:C:\app\Administrator\product\11.2.0\dbho ...

  9. mysql树查询、递归查询

    关键词:mysql树查询,mysql递归查询 转自:http://www.cnblogs.com/c-h-y/p/9420726.html 之前一直用的是Oracle,对于树形查询可以使用start ...

  10. hdu-1281.棋盘游戏(二分图匹配 + 二分图关键点查询)

    棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...