[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变表 ...
随机推荐
- node 实现Token状态登录 及数据库增删改查
1.项目目录结构 2.启动入口文件代码index.js const express = require('express') const bodyParser = require('body-pars ...
- Day 14B 网络应用开发
网络应用开发 发送电子邮件 在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知.网站向用户发送一个激活账号的链接.银行向客户推广它们的理财产品等几乎都 ...
- LeetCode141LinkedListCycle和142LinkedListCycleII
141题:判断链表是不是存在环! // 不能使用额外的存储空间 public boolean hasCycle(ListNode head) { // 如果存在环的 两个指针用不一样的速度 会相遇 L ...
- UVA - 208 Firetruck(并查集+dfs)
题目: 给出一个结点d和一个无向图中所有的边,按字典序输出这个无向图中所有从1到d的路径. 思路: 1.看到紫书上的提示,如果不预先判断结点1是否能直接到达结点d,上来就直接dfs搜索的话会超时,于是 ...
- Linux 应用总结:自动删除n天前的日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- LINUX-用户和群组
groupadd group_name 创建一个新用户组 groupdel group_name 删除一个用户组 groupmod -n new_group_name old_group_name 重 ...
- led1,1s取反,led2计数10次取反
1 //利用定时器0 1s,led1取反,利用计数器1,跳10,取反 #include<reg52.h> #define uchar unsigned char #define uint ...
- 关于app.js和route.js和service.js还有controller.js中的依赖关系
2.只要是由路由去执行的的控制器模块,必须注入到app.js里面进行依赖,在页面上就不需要ng-controller在html页面上写了: 但是如果一个控制器模块,没有经过路由管理:那么就必须要, ...
- 在此计算机中仅有部分visual studio2010产品已升级到SP1,只有全部升级,产品才能正常运行
先说废话: 本人机子刚装系统Win10 专业版 1709 开始安装vs2010的时候中途报错了,有一个什么驱动不兼容,被我给关闭了,继续安装完,然后找不到vs的启动快捷方式,开始里面没有,于是我开始修 ...
- 【Codeforces 1019A】Elections
[链接] 我是链接,点我呀:) [题意] 每个人都有自己喜欢的队员 但是如果贿赂他们可以让他们更改自己喜欢的队员 问你最少要花多少钱贿赂队员才能让1号队员严格有最多的人喜欢? [题解] 除了1号之外, ...