题意:

给你一个矩阵,矩阵里有” . “和” # “,” . “表示空的,” # “表示禁止的。

多米诺骨牌将占据正好有两个相邻的单元格,或者位于一排或一列。两个相邻的单元格必须是空的,并且必须是一个网格内。对于每个询问,求给定矩形里面能组成不同多米诺骨牌的方式。

思路:

对于一段连续空的,我们能算出来,他的方法是n-1个。

=>求给定矩阵在行和列上的连续空的有多长。

一个挺好的方案:开两个数组直接记录,然后对于给定矩形,枚举每行每列,直接减一下,全部加起来就是answer。

感觉有点小神奇的方法。。。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. typedef unsigned long long ULL;
  5. const double eps=1e-6;
  6. const double pi=acos(-1.0);
  7. const int mod=998244353;
  8. const int INF=0x3f3f3f3f;
  9. const int N=1e2+10;
  10. char ma[N*5][N*5];
  11. int n[N*5][N*5];
  12. int m[N*5][N*5];
  13. int main()
  14. {
  15. int i,j,h,w;
  16. scanf("%d%d",&h,&w);
  17. for(i=0;i<h;i++)
  18. scanf("%s",ma[i]);
  19. memset(n,0,sizeof(n));
  20. memset(m,0,sizeof(m));
  21. for(i=0;i<h;i++)
  22. {
  23. for(j=0;j<w;j++){
  24. if(j>0&&ma[i][j]=='.'&&ma[i][j]==ma[i][j-1]) n[i][j]=n[i][j-1]+1;
  25. else n[i][j]=n[i][j-1];
  26. if(i>0&&ma[i][j]=='.'&&ma[i-1][j]==ma[i][j]) m[i][j]=m[i-1][j]+1;
  27. else m[i][j]=m[i-1][j];
  28. }
  29. }
  30. LL ans;
  31. int q;
  32. int x1,x2,y1,y2;
  33. scanf("%d",&q);
  34. while(q--){
  35. ans=0;
  36. scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
  37. x1--;
  38. y1--;
  39. x2--;
  40. y2--;
  41. for(i=x1;i<=x2;i++)
  42. ans+=n[i][y2]-n[i][y1];
  43. for(j=y1;j<=y2;j++)
  44. ans+=m[x2][j]-m[x1][j];
  45. printf("%I64d\n",ans);
  46. }
  47. return 0;
  48. }

codeforces 611C的更多相关文章

  1. Codeforces 611C New Year and Domino(二维前缀和)

    题目大概说给一个n*m个格子,格子'.'表示可以放东西,多次询问矩形区域(x1,y1)-(x2,y2)有几种放一张1*2的骨牌的方案数. 分别考虑横着竖着放,预处理出二维的前缀和,即sum[x][y] ...

  2. 【CodeForces 611C】New Year and Domino

    题 题意 h行w列的矩形格子,“." 代表空的,"#" 代表满的,多米诺是 1*2 的长方体,现在放进格子,给你子矩形的左上角和右上角,问在子矩形里共有多少种放一块多米诺 ...

  3. Codeforces 611C New Year and Domino DP+容斥

    "#"代表不能放骨牌的地方,"."是可以放 500*500的矩阵,q次询问 开两个dp数组,a,b,a统计横着放的方案数,b表示竖着放,然后询问时O(1)的,容 ...

  4. Codeforces 611C. New Year and Domino 动态规划

    C. New Year and Domino time limit per test 3 seconds memory limit per test 256 megabytes input stand ...

  5. CodeForces 611C New Year and Domino (动态规划,DP)

    题意:给定一个h*w的网格,里面只有.和#,.表示空的,#表示禁止的,然后有q个询问,询问中给你两个坐标,分别是左上和右下,求在这两者中间的有多少种(竖着和横着)两个相邻的点. 析:一看到这个题目,肯 ...

  6. codeforces611C

    New Year and Domino CodeForces - 611C 他们说:“每一年都像多米诺骨牌,一个接一个地倒下去”.但是,一年能够像多米诺骨牌那样放在网格中吗?我不这么认为. Zydsg ...

  7. codeforces的dp专题

    1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...

  8. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  9. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

随机推荐

  1. HTML5面试题-b

    感谢分享 面试有几点需要注意: 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题. 进行追问: 可以 ...

  2. JSON JavaScriptSerializer 字符串的长度超过了为 maxJsonLength 属性设置的值。

    1.序列化: 以下代码在对象过大时会报错:进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. //jsonObj比较大的时候会报错 var serialize ...

  3. postgres SQL编译过程

    PG启动首先完成主进程和后台进程的启动,启动时完成数据库文件的打开,共享内存的建立等.接着,所有SQL都会启动1个单独的进程处理SQL的执行过程. 新的进程首先是进行自身的初始化,最主要的是初始化内存 ...

  4. jvm 命令

    jps  jps主要用来输出JVM中运行的进程状态信息.语法格式如下: jps [options] [hostid] 如果不指定hostid就默认为当前主机或服务器. -q 不输出类名.Jar名和传入 ...

  5. Eclipse中设置编码的方法

    Eclipse中设置编码的方式如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工作空间(workspace)的缺省字 ...

  6. Delphi中取得汉字的首字母简单方法(十分巧妙)

    //从朝闻道的博客里转载,原文定义AHzStr: String,发现结果为空,后来改成AHzStr: AnsiString就可以了 function GetHzPy(const AHzStr: Ans ...

  7. 基于Ubuntu 14.04 LTS编译Android4.4.2源码

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...

  8. VS1053 datasheet 解读笔记

    pdf  10 pdf 11 ` 左右声道 负载,注意这里的负载指LEFT 到GBUF,RIGHT到GBUF.所以后面会有说明GBUF一定不能连接到GND. pdf 14 pdf 14 从上面的引脚定 ...

  9. 百度dureos CMake Error

    CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, ...

  10. Java类加载器(ClassLoader)

    类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Jav ...