【题目描述】:Limak是一只喜欢玩的小北极熊。 他最近得到了一个带有h行和w列的矩形网格。 每个单元格都是一个正方形,可以是空的(用'.'表示),也可以是禁止的(用'#'表示)。 行从上到下编号为1到h。 列从左到右编号为1到w。此外,Limak还有一张多米诺骨牌。 他想把它放在网格中的某个地方。 多米诺骨牌将恰好占据两个相邻的单元格,位于一行或一列中。 两个相邻的单元格必须为空,并且必须位于网格内。Limak需要更多的乐趣,因此他会考虑一些问题。 在每个查询中,他选择一个矩形,并思考有多少种方法可以将一个多米诺骨牌放在所选矩形内?
【输入描述】:第一行包含两个整数h和w(1≤h,w≤500);接下来的h行描述了一个网格。 每行包含一个长度为w的字符串。 每个字符都是'.' 或'#';下一行包含一个整数q(1≤q≤100000),表示查询次数;接下来的q行中的每一行包含四个整数r1i,c1i,r2i,c2i(1≤r1i≤r2i≤h,1≤c1i≤c2i≤w),表示第i个查询。 数字r1i和c1i分别表示矩形的左上单元格的行和列。 数字r2i和c2i分别表示矩形右下单元格的行和列。
【输出描述】:输出q行,每行一个正整数,表示对应询问的方案数。
【样例输入1】:5 8
....#..#
.#......
##.#....
##..#.##
........
4
1 1 2 3
4 1 4 1
1 2 4 5
2 5 5 8【样例输出1】:4
0
10
15【样例输入2】:7 39
.......................................
.###..###..#..###.....###..###..#..###.
...#..#.#..#..#.........#..#.#..#..#...
.###..#.#..#..###.....###..#.#..#..###.
.#....#.#..#....#.....#....#.#..#..#.#.
.###..###..#..###.....###..###..#..###.
.......................................
6
1 1 3 20
2 10 6 30
2 10 7 30
2 2 7 7
1 7 7 7
1 8 7 8【样例输出2】:53
89
120
23
0
2【时间限制、数据范围及描述】:时间:1s 空间:256M40%的数据:1≤h,w≤100;1≤q≤10000;100%的数据:1≤h,w≤500;1≤q≤100000;本题可以算出每一行和每一列的贡献,统计答案时将这些贡献相减再相加即可.Code:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
#include<deque>
using namespace std;
const int N=505;
int h,w,q,r[N][N],l[N][N],r1,c1,r2,c2;
char c[N][N];
int main(){scanf("%d%d",&h,&w);for(int i=1;i<=h;i++){for(int j=1;j<=w;j++){cin>>c[i][j];}}for(int i=1;i<=h;i++){int tot=0;for(int j=1;j<=w;j++){if(c[i][j]=='#'){tot=0;r[i][j]=r[i][j-1];continue;}tot++;if(tot!=1){r[i][j]=r[i][j-1]+1;}else{r[i][j]=r[i][j-1];}}}for(int j=1;j<=w;j++){int tot=0;for(int i=1;i<=h;i++){if(c[i][j]=='#'){tot=0;l[i][j]=l[i-1][j];continue;}tot++;if(tot>1){l[i][j]=l[i-1][j]+1;}else{l[i][j]=l[i-1][j];}}}scanf("%d",&q);while(q--){scanf("%d%d%d%d",&r1,&c1,&r2,&c2);int ans=0;for(int i=r1;i<=r2;i++){ans+=r[i][c2]-r[i][c1];}for(int j=c1;j<=c2;j++){ans+=l[r2][j]-l[r1][j];}printf ("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/ukcxrtjr/p/11531253.html

UOJ #585. 新年和多米诺相关推荐

  1. 多米诺骨牌效应(转载)

    多米诺骨牌效应(Domino Effect) 多米诺骨牌效应简介 新华社2000年12月31日和中央电视台2001年元月6日先后报道:在20世纪的最后几分钟里,一项新的多米诺骨牌吉尼斯世界纪录,在北京 ...

  2. 多米诺骨牌效应,量子计算机大规模扩展的新途径

    能否创造出一台强大的大规模量子计算机,取决于是否运用了巧妙的方法,来控制和读出大量的量子比特. 荷兰代尔夫特理工大学和荷兰国家应用科学研究院(TNO)合作的QuTech公司的研究人员,发明了一种新的读 ...

  3. S6 edge+的多米诺骨牌效应:大屏的趋势

    日前,为庆祝三星S6 edge+国行版的顺利发售,三星盖乐世社区的一些粉丝自发组织了三星疯狂"盖星人"第一期活动--活动现场除了可以对S6 edge+进行全方面体验之外,还将演示著 ...

  4. 多米诺骨牌最长牌阵java_棋盘的完美覆盖(多米诺骨牌完美覆盖)幻方(魔方阵)...

    棋盘的完美覆盖: 一张8行8列的棋盘一共有64个方格,用一些形状相同的多米诺骨牌覆盖,每一张覆盖相邻的两个方格,没有相互重叠,能用32张这样的多米诺骨牌完全覆盖整张棋盘称为多米诺骨牌完美覆盖或者盖瓦. ...

  5. 多米诺骨牌上演:三箭资本崩盘始末

    原文作者:Daniel Li 三箭资本,我们一般称他为 3AC,是世界上最大的以加密货币为重点的对冲基金公司之一.由Su Zhu和Kyle Davies于 2012 年创立,两人是高中同学,均为投行背 ...

  6. Nansen复盘加密巨头自救:如何阻止百亿多米诺倾塌

    三箭.Celsius.Amber Group.其他巨鲸钱包都在 stETH 事件前后做了什么? 本文经 Nansen 授权,由 Odaily 星球日报译者 Katie 辜编译. 随着前阵时间 stET ...

  7. 硅谷银行宣布破产,多米诺骨牌效应的开始?

    ​3月11日,整个创投圈彻夜难眠--硅谷银行(SVB)一夜间倒闭,美国联邦存款保险公司(FDIC)将着手处理"身后事".由于巨额亏损和被大幅挤兑,在尝试出售资产和再融资失败后,3月 ...

  8. 九校联考-DL24 凉心模拟 Day1T3 三米诺 (tromino)

    题目描述 金企鹅同学非常擅长用 1×21×21×2 的多米诺骨牌覆盖棋盘的题.有一天,正在背四六级单词的他忽然想:既然两个格子的积木叫"多米诺 (domino)",那么三个格子的的 ...

  9. 多米诺骨牌效应Semphore

    生活中其实都充满了共享锁的例子,例如坐校车,它的容量比如说只能装50人,排队等候,当公交车到来时,排队一个接一个的上车,当进去的人数差不多时,司机师傅可能会清点一下座位,并告诉下面排队的人还有多少剩余 ...

最新文章

  1. Pandas 基础 (5) —— 处理缺失数据及层次化索引
  2. 多核时代 .NET Framework 4 中的并行编程6---并行LINQ
  3. Markdown 11种基本语法
  4. 重温Servlet学习笔记--response对象
  5. linux的常用操作——vim和vi
  6. 填坑总结:python内存泄漏排查小技巧
  7. 170504、MongoDB和MySQL对比(译)
  8. 编译动态库时报错relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile
  9. android中正则表达式截取html中的video标签
  10. python_文件统计问题:文件” seqs_fasta.txt”保存着具有fasta格式的100多个蛋白质氨基酸序列
  11. php 转义反绡线,PHP汉字转拼音
  12. 1078: 字符串加密
  13. python 聚类 客户细分_KMeans聚类:商城客户细分数据
  14. Tomat介绍--1
  15. 解决“我们注意到您的计算机目前处于离线状态。您需要连接网络以使用EA”
  16. 工作日常记录:整数有符号数除以无符号数的那些事
  17. CPU卡的一个发卡详细过程
  18. 15页PPT:摘果式拣选与播种式拣选
  19. MATLAB设计控制系统仿真实验,基于MATLAB的自动控制原理实验仿真系统的设计
  20. C 语言学习笔记(三):C 语言开发环境搭建

热门文章

  1. 快春运了,做个火车余票查询接口,余票来源12306,图是百度地图
  2. Chromium Embedded Framework中文文档 (如何链接不同的运行时)
  3. 阿里面试题——Java对象初始化
  4. linux运维相关操作(centos/Ubuntu)
  5. override覆盖
  6. Ubuntu 16设置固定IP和DNS
  7. 为什么要设置Java环境变量(详解)
  8. 10-穿墙代理的设置 | 01.数据抓取 | Python
  9. android 隐藏手机底部虚拟按键
  10. android进程优先级的计算