BZOJ 3132: 上帝造题的七分钟 树状数组+差分
这个思路很巧妙啊 ~
code:
#include <cstdio>
#include <algorithm>
#define N 2050
#define ll int
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
struct BIT {
ll C[N][N];
int lowbit(int t) {
return t&(-t);
}
void update(int x,int y,int d) {
for(int i=x;i<N;i+=lowbit(i)) {
for(int j=y;j<N;j+=lowbit(j)) {
C[i][j]+=d;
}
}
}
ll query(int x,int y) {
ll re=0;
for(int i=x;i;i-=lowbit(i)) {
for(int j=y;j;j-=lowbit(j)) {
re+=C[i][j];
}
}
return re;
}
}A,B,C,D;
void Add(int x,int y,int d) {
A.update(x,y,d);
B.update(x,y,x*d);
C.update(x,y,y*d);
D.update(x,y,x*y*d);
}
ll qu(int x,int y) {
ll qa=A.query(x,y)*(x*y+x+y+1);
ll qb=-B.query(x,y)*(y+1);
ll qc=-C.query(x,y)*(x+1);
ll qd=D.query(x,y);
return qa+qb+qc+qd;
}
int main() {
// setIO("input");
char sr[2];
int i,j;
int n;
int m;
scanf("%s",sr);
scanf("%d%d",&n,&m);
while(scanf("%s",sr)!=EOF) {
int a,b,c,d,e;
if(sr[0]=='L') {
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
Add(a,b,e);
Add(a,d+1,-e);
Add(c+1,b,-e);
Add(c+1,d+1,e);
}
else {
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d\n",qu(c,d)-qu(a-1,d)-qu(c,b-1)+qu(a-1,b-1));
}
}
return 0;
}
BZOJ 3132: 上帝造题的七分钟 树状数组+差分的更多相关文章
- BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组)
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 46 Solved: 18[Submit][Status][Discus ...
- 【BZOJ3132】上帝造题的七分钟 [树状数组]
上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description “第一分钟,X说,要有矩阵 ...
- [luogu] P4514 上帝造题的七分钟 (树状数组,二维差分)
P4514 上帝造题的七分钟 题目背景 裸体就意味着身体. 题目描述 "第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为(a ...
- BZOJ 3132: 上帝造题的七分钟( 二维BIT )
二维树状数组... 自己YY一下再推一下应该可以搞出来... --------------------------------------------------------------------- ...
- [BZOJ 3132] 上帝造题的七分钟
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3132 [算法] 二维树状数组 [代码] #include<bits/stdc+ ...
- BZOJ 3132 上帝造题的七分钟(二维树状数组)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132 题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值:(2)查询某 ...
- bzoj 3132: 上帝造题的七分钟 (二维树状数组)
推推公式,最后变成四个东西的前缀和 然后不知道为什么一直wa,数据在本地测是没有错的& 好心的管理员还给了某位p党大神a了的代码,感人肺腑(虽然还是没发现到底我的程序是问题) var f1,f ...
- BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1469 Solved: 631[Submit][Status][Dis ...
- BZOJ 3038: 上帝造题的七分钟2 / BZOJ 3211: 花神游历各国 (线段树区间开平方)
题意 给出一些数,有两种操作.(1)将区间内每一个数开方(2)查询每一段区间的和 分析 普通的线段树保留修改+开方优化.可以知道当一个数为0或1时,无论开方几次,答案仍然相同.所以设置flag=1变表 ...
随机推荐
- HTML+css基础 p段落标签 a 超链接标签 Src和href有什么区别和关联? target属性 Meta标签
p段落标签: <p></p> 1.他是唯一一个可以不写结束标签的双标签. a 超链接标签: 从一个页面链接到另一个页面.靠的是href属性. Src和href有什么区别和关联 ...
- 网络基础-------------给电脑设置IP
ip 是每一台电脑进入互联网的一个必备钥匙,没有它就不能体会冲浪的乐趣,当我们使用电脑连接无线时我们就会被自动分配一个ip地址(DHCP),这样我们就可以凭借这个IPV4地址来进行冲浪了,但是自动分配 ...
- C# Thread was being aborted
先重现问题 1.新建一个aspx页面项目,插入两个页面WebForm1.aspx,WebForm2.aspx, WebForm1代码修改如下 protected void Page_Load(obje ...
- Java解压和压缩带密码的zip或rar文件(下载压缩文件中的选中文件、向压缩文件中新增、删除文件)
JAVA 实现在线浏览管理zip和rar的工具类 (有密码及无密码的)以及下载压缩文件中的选中文件(向压缩文件中新增.删除文件) 这是之前的版本 JAVA 解压压缩包中指定文件或实现压缩文件的预览及下 ...
- golang学习笔记---命令源码文件接收参数(flag包)
命令源码文件怎样接收参数 go标准库中有一个代码包专门用于接收和解析命令参数.这个包叫flag 实例1: package main import ( "flag" "fm ...
- SuRF : Practical Range Query Filtering with Fast Succinct Tries
1. Introduction 在数据库管理系统中查找某些关键字会导致很大的磁盘I/O开销,针对这一问题,通常会使用一个内存开销小并且常驻内存的过滤器来检测该关键字是否存.比如现在常用的bloom过滤 ...
- dotnet学习系列
这里整理下之前关于dotnet方面的文章索引. 一.dotnet core 系列 dotnet core 微服务教程 asp.net core 系列之并发冲突 asp.net core 系列之中间件进 ...
- 类初始化应用(class初始化值用函数改变与增添)
class Dataset(object): def __init__(self): self.image_info = [] # 初始化一个列表 def add_image(self, source ...
- Flask简介及使用
目录 Flask简介 wsgiref wsgiref简单应用 两个依赖 werkzeug Jinja2 简单使用 安装 flask快速使用 Django与Flask返回值的对比 Flask简介 F ...
- ES6-面向对象
1.老版的面向对象: function User(name,pass){ this.name=name; this.pass=pass; } User.prototype.showName=funct ...