【NOIP2016提高A组模拟9.21】矩阵
来源:互联网 发布:编程资料百度云 编辑:程序博客网 时间:2024/05/21 17:07
题目
看题目戳这里~(看不了的话就看下面吧不过少了一个图而且sample input很奇怪QAQ)
Description
在麦克雷的面前出现了一个有n*m个格子的矩阵,每个格子用“.”或“#”表示,“.”表示这个格子可以放东西,“#”则表示这个格子不能放东西。现在他拿着一条1*2大小的木棒,好奇的他想知道对于一些子矩阵,有多少种放木棒的方案。
Input
第一行包含 2 个正整数 n,m。
接下来 n 行每行包含 m 个字符“.”或“#”。
第n+1行包含1个正整数q,表示询问次数。
接下来q行每行包含4个正整数r1,c1,r2,c2,分别表示询问的子矩阵的左上格子和右下格子的位置。
Output
输出共 q 行,每行包含 1 个整数,表示该询问的方案数。
Sample Input
5 8
….#..#
.#……
.#….
..#.
……..
4
1 1 2 3
4 1 4 1
1 2 4 5
2 5 5 8
Sample Output
4
0
10
15
Data Constraint
30%:q<=100
100%:q<=10^5,1<=n,m<=500
比赛时の想法
设sum[i,j]为第i行前j个位置如果要横着摆有多少种情况
sum1[i,j]为第i行前j个位置如果要竖着摆有多少种情况(i在下面)
那么每一次直接前缀和统计答案就好了
贴代码
var f,g:array[0..505,0..505]of longint; s:array[0..505,0..505]of char; i,j,k,l,n,m,r1,c1,r2,c2,ans,q:longint;begin // assign(input,'t2.in'); reset(input); // assign(output,'t2.out'); rewrite(output); readln(n,m); for i:=1 to n do begin for j:=1 to m do read(s[i,j]); readln; end; for i:=1 to n do begin for j:=2 to m do begin f[i,j]:=f[i,j-1]; if (s[i,j]='.') and (s[i,j-1]='.') then inc(f[i,j]); end; end; for i:=2 to n do begin for j:=1 to m do begin g[i,j]:=g[i,j-1]; if (s[i,j]='.') and (s[i-1,j]='.') then inc(g[i,j]); end; end; readln(q); for i:=1 to q do begin readln(r1,c1,r2,c2); ans:=0; for j:=r1 to r2 do ans:=ans+f[j,c2]-f[j,c1]; for j:=r1+1 to r2 do ans:=ans+g[j,c2]-g[j,c1-1]; writeln(ans); end; // close(input); close(output);end.
0 0
- 【NOIP2016提高A组模拟9.21】矩阵
- 矩阵【NOIP2016提高A组模拟9.21】
- 【JZOJ4791】【NOIP2016提高A组模拟9.21】矩阵
- 【NOIP2016提高A组模拟9.21】整除
- 整除【NOIP2016提高A组模拟9.21】
- 【JZOJ4792】【NOIP2016提高A组模拟9.21】整除
- 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
- 【NOIP2016提高A组模拟9.21】选数问题
- 选数问题【NOIP2016提高A组模拟9.21】
- 【NOIP2016提高A组模拟7.15】立方体
- 计数【NOIP2016提高A组模拟7.15】
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.17】锦标赛
- 【NOIP2016提高A组模拟7.15】修路
- 【NOIP2016提高A组模拟7.15】计数
- Redis:主从复制
- The next step
- Meteor中文博客转载
- 机器学习中的算法-支持向量机(SVM)基础
- JSPatch Platform平台的简单使用
- 【NOIP2016提高A组模拟9.21】矩阵
- convolutional sparse coding codes
- 【龙印】用M665和M666给三角洲3D打印机调平
- 微信小程序应用号?对企业,对开发者,对用户的影响?
- 了解Firebase
- 建立软连接
- Android压缩图片到100K以下并保持不失真的高效方法
- CCF201503-1
- 文本自动分类