[BZOJ 3132] 上帝造题的七分钟
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=3132
[算法]
二维树状数组
[代码]
#include<bits/stdc++.h>
using namespace std;
#define MAXN 2050 int n,m,a,b,c,d;
int delta;
int bit[][MAXN][MAXN];
char op[]; inline int lowbit(int x)
{
return x & (-x);
}
inline void modify1(int x,int y,int val)
{
for (register int i = x; i <= n; i += lowbit(i))
{
for (register int j = y; j <= m; j += lowbit(j))
{
bit[][i][j] += val;
}
}
}
inline void modify2(int x,int y,int val)
{
for (register int i = x; i <= n; i += lowbit(i))
{
for (register int j = y; j <= m; j += lowbit(j))
{
bit[][i][j] += val;
}
}
}
inline void modify3(int x,int y,int val)
{
for (register int i = x; i <= n; i += lowbit(i))
{
for (register int j = y; j <= m; j += lowbit(j))
{
bit[][i][j] += val;
}
}
}
inline void modify4(int x,int y,int val)
{
for (register int i = x; i <= n; i += lowbit(i))
{
for (register int j = y; j <= m; j += lowbit(j))
{
bit[][i][j] += val;
}
}
}
inline int query1(int x,int y)
{
int ret = ;
for (register int i = x; i >= ; i -= lowbit(i))
{
for (register int j = y; j >= ; j -= lowbit(j))
{
ret += bit[][i][j];
}
}
return ret;
}
inline int query2(int x,int y)
{
int ret = ;
for (register int i = x; i >= ; i -= lowbit(i))
{
for (register int j = y; j >= ; j -= lowbit(j))
{
ret += bit[][i][j];
}
}
return ret;
}
inline int query3(int x,int y)
{
int ret = ;
for (register int i = x; i >= ; i -= lowbit(i))
{
for (register int j = y; j >= ; j -= lowbit(j))
{
ret += bit[][i][j];
}
}
return ret;
}
inline int query4(int x,int y)
{
int ret = ;
for (register int i = x; i >= ; i -= lowbit(i))
{
for (register int j = y; j >= ; j -= lowbit(j))
{
ret += bit[][i][j];
}
}
return ret;
}
inline void Modify(int x,int y,int delta)
{
modify1(x,y,delta);
modify2(x,y,x * delta);
modify3(x,y,y * delta);
modify4(x,y,x * y * delta);
}
inline int Query(int x,int y)
{
int v1 = query1(x,y),v2 = query2(x,y),v3 = query3(x,y),v4 = query4(x,y);
int ans1 = x * (v1 * y - v3 + v1);
int ans2 = v2 * y - v4 + v2;
int ans3 = v1 * y - v3 + v1;
return ans1 - ans2 + ans3;
} int main()
{ scanf("%s%d%d",&op,&n,&m);
while (scanf("%s",&op) != EOF)
{
if (op[] == 'L')
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&delta);
Modify(a,b,delta);
Modify(a,d + ,-delta);
Modify(c + ,b,-delta);
Modify(c + ,d + ,delta);
} else
{
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("%d\n",Query(c,d) - Query(a - ,d) - Query(c,b - ) + Query(a - ,b - ));
}
} return ; }
[BZOJ 3132] 上帝造题的七分钟的更多相关文章
- BZOJ 3132: 上帝造题的七分钟( 二维BIT )
二维树状数组... 自己YY一下再推一下应该可以搞出来... --------------------------------------------------------------------- ...
- BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组)
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 46 Solved: 18[Submit][Status][Discus ...
- BZOJ 3132 上帝造题的七分钟(二维树状数组)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3132 题意:给出一个矩阵,两种操作:(1)将某个子矩阵的数字统一加上某个值:(2)查询某 ...
- bzoj 3132: 上帝造题的七分钟 (二维树状数组)
推推公式,最后变成四个东西的前缀和 然后不知道为什么一直wa,数据在本地测是没有错的& 好心的管理员还给了某位p党大神a了的代码,感人肺腑(虽然还是没发现到底我的程序是问题) var f1,f ...
- BZOJ 3132: 上帝造题的七分钟 树状数组+差分
这个思路很巧妙啊 ~ code: #include <cstdio> #include <algorithm> #define N 2050 #define ll int #d ...
- BZOJ 3038: 上帝造题的七分钟2
3038: 上帝造题的七分钟2 Description XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分 ...
- BZOJ 3038: 上帝造题的七分钟2【线段树区间开方问题】
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1469 Solved: 631[Submit][Status][Dis ...
- bzoj 3038: 上帝造题的七分钟2 线段树||hdu 4027
3038: 上帝造题的七分钟2 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1066 Solved: 476[Submit][Status][Dis ...
- BZOJ 3038: 上帝造题的七分钟2 / BZOJ 3211: 花神游历各国 (线段树区间开平方)
题意 给出一些数,有两种操作.(1)将区间内每一个数开方(2)查询每一段区间的和 分析 普通的线段树保留修改+开方优化.可以知道当一个数为0或1时,无论开方几次,答案仍然相同.所以设置flag=1变表 ...
随机推荐
- nginx_rewrite规则介绍
rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向.rewrite只能放在server{},location{},if{}中,并且只能 ...
- Spring Boot 与ElasticSearch
一.ElasticSearch 介绍 开源的 ElasticSearch 是目前全文搜索引擎的首选,它是一个分布式搜索服务,提供Restful API,它可以快速地存储.搜索和分析海量数据.底层基 ...
- struts2源码下载链接
http://blog.csdn.net/qq_qun_247286682/article/details/6975298
- 解决移动端 footer fixd 定位被键盘顶起来的方案
直接上代码: $(document).ready(function () { var u = navigator.userAgent; var isAndroid = u.indexOf('Andro ...
- <MySQL>入门四 事务控制语言 TCL
-- TCL /* Transcation Control Language 事务控制语言 事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行 案例:转账 name ...
- 用Python实现阿里钉钉机器人读取数据库内容自动发群通知
最近想把一些预警数据信息按照一定的要求自动发送到移动端APP,最终把目标放在了腾讯的微信和阿里的钉钉软件上,由于刚开始学习python,于是编程工具想用python来实现.微信使用群体最广,通过一天的 ...
- Django 数据库操作之数据库连接
修改settings.py文件 """ Django settings for db_operation_demo project. Generated by 'djan ...
- pandas处理各类表格数据
经常遇到Python读取excel和csv还有其他各种文件的内容.json还有web端的读取还是比较简单,但是excel和csv的读写是很麻烦.这里记录了pandas库提供的方法来实现文本内容和Dat ...
- RCC 2014 Warmup (Div. 2) 蛋疼解题总结
A. Elimination time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- noip模拟赛 蒜头君的排序
分析:其实就是求m个区间的逆序对个数,题目真的是明摆着让我们用莫队算法,套用树状数组就可以了. 具体怎么转移呢?如果移动R,那么对区间[l,r]有影响的是R左边的元素,我们只需要看有多少在R左边比a[ ...