洛谷 P4514 上帝造题的七分钟 解题报告
P4514 上帝造题的七分钟
题目背景
裸体(裸题)就意味着身体(神题)。
题目描述
“第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n \times m\)矩阵。
第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\),右下角为\((c,d)\)的一个矩形区域内的全部数字加上一个值的操作。
第三分钟,k说,要能查询,于是便有了求给定矩形区域内的全部数字和的操作。
第四分钟,彩虹喵说,要基于二叉树的数据结构,于是便有了数据范围。
第五分钟,和雪说,要有耐心,于是便有了时间限制。
第六分钟,吃钢琴男说,要省点事,于是便有了保证运算过程中及最终结果均不超过32位有符号整数类型的表示范围的限制。
第七分钟,这道题终于造完了,然而,造题的神牛们再也不想写这道题的程序了。”
——《上帝造裸题的七分钟》
所以这个神圣的任务就交给你了。
输入输出格式
输入格式:
输入数据的第一行为\(X\) \(n\) \(m\),代表矩阵大小为\(n \times m\)。
从输入数据的第二行开始到文件尾的每一行会出现以下两种操作:
L a b c d delta —— 代表将\((a,b),(c,d)\)为顶点的矩形区域内的所有数字加上\(delta\)。
k a b c d —— 代表求\((a,b),(c,d)\)为顶点的矩形区域内所有数字的和。
请注意,\(k\)为小写。
输出格式:
针对每个k操作,在单独的一行输出答案。
说明
对于\(10\%\)的数据,\(1 ≤ n ≤ 16, 1 ≤ m ≤ 16\), 操作不超过200个.
对于\(60\%\)的数据,\(1 ≤ n ≤ 512, 1 ≤ m ≤ 512\).
对于\(100\%\)的数据,\(1 ≤ n ≤ 2048, 1 ≤ m ≤ 2048, -500 ≤ delta ≤ 500\),操作不超过200000个,保证运算过程中及最终结果均不超过32位带符号整数类型的表示范围。
by XLk
说起来上午推了倒是退出来了,但是没搞清楚把什么放在外面乘结果错了有点怀疑人生看了题解发现自己还搞麻烦了(我太蒻了
很显然是胡乱对差分数组搞事的题目
设差分数组\(d_{i,j}\)
则有\(a_{x,y}=\sum_{i=1}^{x} \sum_{j=1}^y d_{i,j}\)
对于前缀和再求一次
\(f_{i,j}=\sum_{i=1}^{x} \sum_{j=1}^{y} \sum_{k=1}^{i} \sum_{l=1}^{y} d_{i,j}\)
\(=\sum_{i=1}^{x} \sum_{j=1}^{y} (x+1-i) \times (y+1-j) d_{i,j}\)
\(=(x+1) \times (y+1) \sum_{i=1}^{x} \sum_{j=1}^{y} d_{i,j} -(y+1) \sum_{i=1}^{x} \sum_{j=1}^{y} i \times d_{i,j} -(x+1) \sum_{i=1}^{x} \sum_{j=1}^{y} j \times d_{i,j} +\sum_{i=1}^{x} \sum_{j=1}^{y} i \times j \times d_{i,j}\)
二维维护四个什么和就行了
(我上午傻乎乎的把所有的\(x\),\(y\)啊全甩进去了。。
Code:
#include <cstdio>
const int N=2500;
int s[4][N][N],n,m;
int query(int typ,int x,int y)
{
int ans=0;
for(int i=x;i;i-=i&-i)
for(int j=y;j;j-=j&-j)
ans+=s[typ][i][j];
return ans;
}
void change(int typ,int x,int y,int delta)
{
for(int i=x;i<=n;i+=i&-i)
for(int j=y;j<=m;j+=j&-j)
s[typ][i][j]+=delta;
}
void modify(int x,int y,int delta)
{
change(0,x,y,delta);
change(1,x,y,y*delta);
change(2,x,y,x*delta);
change(3,x,y,x*y*delta);
}
int ask(int x,int y)
{
int ans=0;
ans+=(x+1)*(y+1)*query(0,x,y);
ans-=(x+1)*query(1,x,y);
ans-=(y+1)*query(2,x,y);
ans+=query(3,x,y);
return ans;
}
int main()
{
char op[4];int a,b,c,d,de;
scanf("%s%d%d",op,&n,&m);
while(scanf("%s%d%d%d%d",op,&a,&b,&c,&d)!=EOF)
{
if(op[0]=='L')
{
scanf("%d",&de);
modify(a,b,de);
modify(a,d+1,-de);
modify(c+1,b,-de);
modify(c+1,d+1,de);
}
else
{
int ans=0;
ans+=ask(c,d);
ans-=ask(a-1,d);
ans-=ask(c,b-1);
ans+=ask(a-1,b-1);
printf("%d\n",ans);
}
}
return 0;
}
2018.9.4
洛谷 P4514 上帝造题的七分钟 解题报告的更多相关文章
- 洛谷P4514 上帝造题的七分钟
P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了000的n×mn×mn×m矩阵. 第二分钟,L说,要能修改,于是便有 ...
- 洛谷P4145 上帝造题的七分钟2/花神游历各国 [树状数组,并查集]
题目传送门 题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是 ...
- 洛谷P4145——上帝造题的七分钟2 / 花神游历各国
题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...
- 洛谷P4145 上帝造题的七分钟2 / 花神游历各国(重题:洛谷SP2713 GSS4 - Can you answer these queries IV)
题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...
- 洛谷 P4145 上帝造题的七分钟2 / 花神游历各国
洛谷 这题就是区间开根号,区间求和.我们可以分块做. 我们记布尔数组vis[i]表示第i块中元素是否全部为1. 因为显然当一个块中元素全部为1时,并不需要对它进行根号操作. 我们每个块暴力开根号,因为 ...
- 洛谷P4145上帝造题的七分钟——区间修改
题目:https://www.luogu.org/problemnew/show/P4145 区间开平方,可以发现其实开几次就变成1,不需要开了,所以标记一下,每次只去开需要开的地方: 原来写的并查集 ...
- [luogu] P4514 上帝造题的七分钟 (树状数组,二维差分)
P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a ...
- P4514 上帝造题的七分钟
P4514 上帝造题的七分钟 题意: 二维区间修改 区间查询 --- 错误日志: 写了个 4 重循环忘记调用 \(i\) Solution 二维树状数组 巨尼玛毒瘤 听说二维线段树会 \(MLE\) ...
- P4514 上帝造题的七分钟——二维树状数组
P4514 上帝造题的七分钟 求的是矩阵里所有数的和: 维护四个树状数组: #include<cstdio> #include<cstring> #include<alg ...
随机推荐
- 牛客小白月赛2 J 美 【构造】
链接:https://www.nowcoder.com/acm/contest/86/J来源:牛客网 题目描述 最后,Sεlιнα(Selina) 开始了选美大赛. 一如既往地,Sεlιнα 想最大化 ...
- linux环境下安装 openOffice 并启动服务
一.背景故事 这两天遇到一个大坑,客户要做office 文档在线预览功能,于是乎就要把office文档转换成pdf交给前端显示. 在某度找了一圈都说openOffice+jodconvert ...
- 在唯一密钥属性“fileExtension”设置为“.”时,无法添加类型为“mimeMap”的重复集合项
在ASP.NET 网站的配置文件中添加了MIME类型,但是运行网站后在IIS上和页面上提示"在唯一密钥属性“fileExtension”设置为“.woff”时,无法添加类型为“mimeMap ...
- redis安装与简单使用
第一步 新建一个文件 第二步 利用winscrp软件从本机上传redis的压缩包到linux新建的rdtar目录 第三步 cd rdtar 第四步 解压 tar zxvf redis-2+t ...
- css 自动换行,超出省略号代替
overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; ...
- ajax 传递文件成功时 jQuery提示parsererror错误
后台返回值类型 改为:PrintWriter out = response.getWriter();String jsonStr = "{\"success\":\&qu ...
- 文件/etc/passwd,/etc/shadow,/etc/group
文件/etc/passwd /etc/shadow /etc/group 计算资源的使用(并不是所有的人都可以用这台计算机的) 权限:访问资源的的能力. 用户:获取资源或者权限的凭证. 用户的容器:关 ...
- L2-029 特立独行的幸福 (25 分)
L2-029 特立独行的幸福 (25 分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 ...
- 笔记-python-多环境-virtualenv
笔记-python-多环境-virtualenv 1. 多环境 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.6.4,所有第三方的包都会被pip安装到Pytho ...
- PHP代码审计6-实战漏洞挖掘-xdcms用户注册页面漏洞
xdcms 源码:xdcms v2.0.8 1.配置 [一直下一步(仅为测试)] #数据库账号root,密码为空:管理员账号/密码:xdcms/xdcms #登录后台 2.查看后台登录页面的配置项[x ...