【BZOJ3132】上帝造题的七分钟
来源:互联网 发布:桑拿软件 编辑:程序博客网 时间:2024/04/30 04:19
题目链接:传送门
题解:
类似于树状数组区间修改区间查询的操作搞一搞
不要开long long
//by sdfzchy#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int inf=(1<<30),N=100010,mod=1e9+7;int n,m;inline int in(){ char tmp=getchar(); int res=0,f=1; while((tmp<'0'||tmp>'9')&&tmp!='-')tmp=getchar(); if(tmp=='-') f=-1,tmp=getchar(); while(tmp>='0'&&tmp<='9') res=(res<<1)+(res<<3)+(tmp^48),tmp=getchar(); return res*f;}char s[10];struct BIT{ int sum[2050][2050]; inline int lo(int x) {return x&(-x);} inline void add(int x,int y,int z) { for(int i=x;i<=n;i+=lo(i)) for(int j=y;j<=m;j+=lo(j)) sum[i][j]+=z; } inline int ask(int x,int y) { int ans=0; for(int i=x;i;i-=lo(i)) for(int j=y;j;j-=lo(j)) ans+=sum[i][j]; return ans; }}A,B,C,D;void Add(int x,int y,int z){ A.add(x,y,z); B.add(x,y,z*x); C.add(x,y,z*y); D.add(x,y,z*x*y); }int ask(int x,int y){ return A.ask(x,y)*(x*y+x+y+1)-B.ask(x,y)*(y+1)-C.ask(x,y)*(x+1)+D.ask(x,y);}int a,b,c,d,x;int main(){ n=in(),m=in(); while(~scanf("%s",s)) { a=in(),b=in(),c=in(),d=in(); if(s[0]=='L') { x=in(); Add(a,b,x); Add(a,d+1,-x); Add(c+1,b,-x); Add(c+1,d+1,x); } else printf("%d\n",ask(c,d)+ask(a-1,b-1)-ask(a-1,d)-ask(c,b-1)); }}
阅读全文
0 0
- [BZOJ3132] 上帝造题的七分钟
- 【BZOJ3132】上帝造题的七分钟
- [BZOJ3132]上帝造题的七分钟
- BZOJ3132上帝造题的七分钟
- 【bzoj3132】上帝造题的七分钟
- 【BZOJ3132】上帝造题的七分钟
- bzoj3132上帝造题的七分钟 二维树状数组
- BZOJ3132 上帝造题的七分钟 【二维树状数组】
- 【BZOJ3132】【TYVJ1716】上帝造题的七分钟 二维树状数组
- 【bzoj3038】 上帝造题的七分钟2
- [BZOJ3038][线段树]上帝造题的七分钟2
- bzoj3038 上帝造题的七分钟2
- BZOJ 3038: 上帝造题的七分钟2
- 【BZOJ3038】【Codevs2492】上帝造题的七分钟2
- 【树状数组】[CQBZOJ2719]上帝造题的七分钟I
- BZOJ3038上帝造题的七分钟2
- [BZOJ3038]上帝造题的七分钟2
- codevs2492 上帝造题的七分钟 2
- iOS block/闭包回调( 反向传值 )
- Basic-Paxos&&leader
- java控制流
- 双硬盘SSD+HDD+ win10装双系统Ubuntu16.04
- laravel框架容器管理的一些要点
- 【BZOJ3132】上帝造题的七分钟
- 你好CSDN
- Java实现敏感词过滤
- 什么是快乐的秘诀?
- DFA与NFA
- ARM架构基础知识
- 作业:简化的插入排序
- 正则表达式: NFA引擎匹配原理
- redis主从数据复制实现原理与搭建