bzoj 3132: 上帝造题的七分钟 (二维树状数组)
推推公式,最后变成四个东西的前缀和
然后不知道为什么一直wa,数据在本地测是没有错的&
好心的管理员还给了某位p党大神a了的代码,感人肺腑(虽然还是没发现到底我的程序是问题)
var
f1,f2,f3,f4:array[..,..]of longint;
x1,y1,x2,y2,n,m,j:longint;
ch:char; function lowbit(x:longint):longint;
begin
exit(x and (-x));
end; procedure add(x,y,z:longint);
var
i,j:longint;
begin
if (x=) or (y=) then exit;
i:=x;
while i<=n do begin
j:=y;
while j<=m do begin
inc(f1[i,j],z);
inc(f2[i,j],z*y);
inc(f3[i,j],z*x);
inc(f4[i,j],z*x*y);
inc(j,lowbit(j));
end;
inc(i,lowbit(i));
end;
end; function askans(x,y:longint):longint;
var
ans,i,j:longint;
begin
ans:=;
i:=x;
while i>= do begin
j:=y;
while j>= do begin
ans:=ans+f1[i,j]*(x+)*(y+);
ans:=ans-f2[i,j]*(x+);
ans:=ans-f3[i,j]*(y+);
ans:=ans+f4[i,j];
dec(j,lowbit(j));
end;
dec(i,lowbit(i));
end;
//writeln(x,' ',y,' ',ans);
exit(ans);
end; begin
readln(ch,n,m);
fillchar(f1,sizeof(f1),);
fillchar(f2,sizeof(f2),);
fillchar(f3,sizeof(f3),);
fillchar(f4,sizeof(f4),);
while not eof do begin
read(ch);
if ch='L' then begin
readln(x1,y1,x2,y2,j);
add(x1,y1,j);
add(x1,y2+,-j);
add(x2+,y1,-j);
add(x2+,y2+,j);
end
else
if ch='k' then begin
readln(x1,y1,x2,y2);
writeln(askans(x2,y2)+askans(x1-,y1-)-askans(x1-,y2)-askans(x2,y1-));
end;
end;
end.
bzoj 3132: 上帝造题的七分钟 (二维树状数组)的更多相关文章
- tyvj P1716 - 上帝造题的七分钟 二维树状数组区间查询及修改 二维线段树
P1716 - 上帝造题的七分钟 From Riatre Normal (OI)总时限:50s 内存限制:128MB 代码长度限制:64KB 背景 Background 裸体就意味着 ...
- 【bzoj3132】上帝造题的七分钟 二维树状数组区间修改区间查询
题目描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a,b),右下角为(c,d)的一个矩形区域内的全部数字加上一个值的操作. ...
- 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组
题目大意 维护一个\(n\times m\)的矩阵,有两种操作: \(1~x_1~y_1~x_2~y_2~v\):把\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(v\). \(2~ ...
- [bzoj3132]上帝造题的七分钟——二维树状数组
题目大意 你需要实现一种数据结构,支援以下操作. 给一个矩阵的子矩阵的所有元素同时加一个数. 计算子矩阵和. 题解 一看这个题,我就首先想到用线段树套线段树做. 使用二维线段树的错误解法 其实是第一次 ...
- P4514 上帝造题的七分钟——二维树状数组
P4514 上帝造题的七分钟 求的是矩阵里所有数的和: 维护四个树状数组: #include<cstdio> #include<cstring> #include<alg ...
- BZOJ 3132: 上帝造题的七分钟( 二维BIT )
二维树状数组... 自己YY一下再推一下应该可以搞出来... --------------------------------------------------------------------- ...
- BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组)
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 46 Solved: 18[Submit][Status][Discus ...
- [BZOJ 3132] 上帝造题的七分钟
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3132 [算法] 二维树状数组 [代码] #include<bits/stdc+ ...
- POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
<题目链接> 题目大意: 给你一个H*W的矩阵,再告诉你有n个坐标有点,问你一个w*h的小矩阵最多能够包括多少个点. 解题分析:二维树状数组模板题. #include <cstdio ...
- BZOJ 2738 矩阵乘法(整体二分+二维树状数组)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2738 [题目大意] 给出一个方格图,询问要求求出矩阵内第k小的元素 [题解] 我们对答 ...
随机推荐
- 翻译:利用GDAL生成cogeoff文件
翻译自: Introducing the AWS Lambda Tiler https://hi.stamen.com/stamen-aws-lambda-tiler-blog-post-76fc11 ...
- JAVA日志框架概述
日志用来记录应用的运行状态以及一些关键业务信息,其重要性不言而喻,通常我们借助于现有的日志框架完成日志输出.目前开源的日志框架很多,常见的有log4j.logback等,有时候我们还会 ...
- hdu2147kiki's game(找规律)
kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)Total ...
- keepalived+nginx实现高可用+tomcat
1.keepalived的yum安装 安装依赖包[root@localhost ~]# yum install -y curl gcc openssl-devel libnl3-devel net-s ...
- 学习用MaxScipt批处理Max文件
学习用MaxScipt批处理Max文件 需求 对几百个.max文件中的指定指定名称的骨骼进行重命名. 解决 考虑到是一次性需求,花了两个钟用maxscript实现了功能,基本逻辑把改名规则做成配置文本 ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 期末考试
Servlet课程考试 Servlet课程考试 Servlet课程考试 总分:55分 限定时间:120分钟 进入考试 答案已成功提交!请耐心等待成绩公布 Servlet课程考试: 1(12分) 简单谈 ...
- 接口文档神器--apiui的使用
接口开发,最麻烦的就是写文档了,曾经我也因为写接口文档苦不堪言:自从使用了apiui接口文档神器,工作效率和文档清晰得到了不止一个档次的提升. 下面介绍一下这个神器的使用: 把文件下载下来,放在网站根 ...
- 1. 两数之和【Leetcode中国,by java】
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...
- JavaScript 正则
元字符 预定义类 边界 ^在中括号中时,匹配非hello的 str = 'hello world' str.match(/[^hello]/g) //[" ", "w&q ...
- POJ 2177 Ghost Busters(三维几何)
Description The famous Ghost Busters team has decided to upgrade their Ectomobile (aka Ecto-1) with ...