上帝造题的七分钟(ybtoj-树状数组)

文章目录

  • 题目描述
  • 解析
  • 代码
  • thanks for reading!

题目描述

在这里插入图片描述

解析

差点活活恶心死
搬砖题
(其实细节没有那么多,还是代码能力太差)

利用矩阵的二维差分
加上树状数组搞一搞
就完事了(我实在不想再写了

洛谷的双倍经验没有那么好水
MLE
这题洛谷的空间限制非常苛刻
几乎没有多余的空间

以后要增强对空间复杂度的敏感性

代码

(看我的print就能看出我调了多久)

#include<bits/stdc++.h>
using namespace std;
const int N=2050;
#define ll long long
int d[N][N];
ll id[N][N],jd[N][N],ijd[N][N];
int n,m;void add_d(int x,int y,ll v){
//	printf("\nx=%d y=%d v=%lld\n",x,y,v);for(int i=x;i<=n;i+=i&-i){for(int j=y;j<=m;j+=j&-j){d[i][j]+=v;
//			printf("x=%d y=%d\n",i,j);}}
}
ll ask_d(int x,int y){
//	printf("\nask:\nx=%d y=%d\n",x,y);ll ans=0;for(int i=x;i;i-=i&-i){for(int j=y;j;j-=j&-j){ans+=d[i][j];} }return ans;
}
void add_id(int x,int y,ll v){v*=x;
//	printf("\nx=%d y=%d v=%lld\n",x,y,v);for(int i=x;i<=n;i+=i&-i){for(int j=y;j<=m;j+=j&-j) id[i][j]+=v;//printf("x=%d y=%d\n",i,j);}
}
ll ask_id(int x,int y){ll ans=0;
//	printf("ask:x=%d y=%d\n------------\n",x,y);for(int i=x;i;i-=i&-i){for(int j=y;j;j-=j&-j){ans+=id[i][j];
//			printf("x=%d y=%d\n",i,j);} }return ans;
}
void add_jd(int x,int y,ll v){v*=y;for(int i=x;i<=n;i+=i&-i){for(int j=y;j<=m;j+=j&-j) jd[i][j]+=v;}
}
ll ask_jd(int x,int y){ll ans=0;for(int i=x;i;i-=i&-i){for(int j=y;j;j-=j&-j){ans+=jd[i][j];} }return ans;
}
void add_ijd(int x,int y,ll v){v*=x*y;for(int i=x;i<=n;i+=i&-i){for(int j=y;j<=m;j+=j&-j) ijd[i][j]+=v;}
}
ll ask_ijd(int x,int y){ll ans=0;for(int i=x;i;i-=i&-i){for(int j=y;j;j-=j&-j){ans+=ijd[i][j];} }return ans;
}void add(int x1,int y1,int x2,int y2,ll v){add_d(x1,y1,v);add_d(x2+1,y2+1,v);add_d(x1,y2+1,-v);add_d(x2+1,y1,-v);add_id(x1,y1,v);add_id(x2+1,y2+1,v);add_id(x1,y2+1,-v);add_id(x2+1,y1,-v);add_jd(x1,y1,v);add_jd(x2+1,y2+1,v);add_jd(x1,y2+1,-v);add_jd(x2+1,y1,-v);add_ijd(x1,y1,v);add_ijd(x2+1,y2+1,v);add_ijd(x1,y2+1,-v);add_ijd(x2+1,y1,-v);
}
ll ask(int x,int y){
//	printf("ok%lld\n",d[2][1]);
//	n--;m--;ll res=(x*y+x+y+1)*ask_d(x,y)+ask_ijd(x,y)-(y+1)*ask_id(x,y)-(x+1)*ask_jd(x,y);
//	printf("x=%d y=%d d=%lld id=%lld jd=%lld ijd=%lld ans=%lld\n",x,y,
//	ask_d(x,y),ask_id(x,y),ask_jd(x,y),ask_ijd(x,y),res);
//	cout<<res<<endl;
//	n++;m++;return res;
}
int main(){
//	printf("%d",sizeof(d)/1024/1024);char flag;scanf("%c%d%d",&flag,&n,&m);
//	add_id(1,1,2);add_id(2,2,1);
//	printf("%lld\n",ask_id(3,3));int a,b,c,e,w;while(scanf(" %c",&flag)!=EOF){if(flag=='L'){scanf("%d%d%d%d%d",&a,&b,&c,&e,&w);add(a,b,c,e,w);
//			printf("okk:%lld\n",ask_d(1,1));}else{scanf("%d%d%d%d",&a,&b,&c,&e);
//			printf("okk:%lld\n",ask_d(1,1));printf("%lld\n",ask(c,e)+ask(a-1,b-1)-ask(a-1,e)-ask(c,b-1));}
//		printf("------------opp:%lld\n",ask_id(3,3));}	return 0;
}
/**/

thanks for reading!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACM模板合集

目录数据结构STL以及基础数据结构并查集线段树树状数组平衡树树套树可并堆\sqrt{}​根号数据结构LCT字符串字符串匹配字符串其他数学数论线性代数组合数学网络流最大流最小割费用流图搜索最短路负环最短路建图最小生成树连通性相关欧拉路径二分图树上问题其他离线分治算法随机化…

P6657-[模板]LGV 引理

正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出nnn\times nnn的棋盘&#xff0c;mmm个起点第iii个为(1,ai)(1,a_i)(1,ai​)&#xff0c;对应mmm个终点第iii个为(n,bi)(n,b_i)(n,bi​)。 求有多少条选出mmm条四联通路径的方案使得没有路径有交点。 2≤…

STL初步讲解

文章目录sortmapvectorstackqueuepriority_queue初学C&#xff0c;发现经常在文件中有using namespace std这个东西。首先 namespace 这个东西叫做命名空间。using有好几种用法&#xff0c;这里使用的是using的命名空间的使用。 std是C中的一个命名空间&#xff0c;叫做标准命名…

.NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

最近一段时间有些事情耽搁了更新&#xff0c;抱歉各位了。上一篇我们简单的介绍了DotNetty通信框架&#xff0c;并简单的介绍了基于DotNetty实现了回路&#xff08;Echo&#xff09;通信过程。我们来回忆一下上一个项目的整个流程&#xff1a;当服务端启动后&#xff0c;绑定并…

洛谷:P1831 杠杆数(数位dp)

文章目录描述解析代码thanks for reading&#xff01;传送门描述 如果把一个数的某一位当成支点&#xff0c;且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和&#xff0c;那么这个数就可以被叫成杠杆数。 比如4139就是杠杆数&#xff0c;把3当成支点&#xff0c…

2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解

前言 找大佬嫖到个号来划水打比赛了&#xff0c;有的题没写或者不是我写的就不放了。 目前只有&#xff1a;1004,1005,1007,1008,1011 正题 题目链接:https://acm.hdu.edu.cn/contests/contest_show.php?cid990 1004 Link with Balls 题目大意 两种盒子各有nnn个&#xff…

Visual Studio 2019 首个预览版本抢先看,有啥新功能?

微软在 Connect 2018 大会上发布Visual Studio 2019 第 1 个预览版本。该预览版本中展示了许多变更&#xff0c;从 IDE 的启动行为&#xff0c;到代码重构功能&#xff1b;从搜索功能的更多用法&#xff0c;到更好的大型项目导航。这个预览版本展现了微软希望尽全力帮助开发人员…

模板:网络流(Dinic算法)

文章目录1.网络最大流题目描述解析反悔边分层&#xff08;避免环流&#xff09;时间优化代码2.费用流描述解析代码1.网络最大流 洛谷P3376 题目描述 给出一个网络图&#xff0c;以及其源点和汇点&#xff0c;求出其网络最大流。 解析 网络流的思想就是在原有的基础上不断进…

NC51272 棋盘覆盖

题目&#xff1a; 给出一张nn(n≤100) 的国际象棋棋盘&#xff0c;其中被删除了一些点&#xff0c;问可以使用多少1*2的多米 诺骨牌进行掩盖。 题解&#xff1a; 先进行黑白染色&#xff0c;相邻的两个黑白就是一个骨牌&#xff0c;又因为一个格子不能放多个骨牌&#xff0c;…

P5494-[模板]线段树分裂

正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合ppp中在[l,r][l,r][l,r]的数放到一个新的集合中将集合ttt的所有数放入集合ppp中在集合ppp中放入xxx个ppp查询集合ppp中在[l,r][l,r][l,r]区间的数查询集合ppp中第kkk小的数 …

暑期训练待补

2021牛客暑期多校训练营5 C-Cheating and Stealing 繁琐 F-Finding Points 计算几何 I-Interval Queries 回滚莫队链表 2021牛客暑期多校训练营6 D-Gambling Monster FWT G-Hasse Diagram min25筛 2021牛客暑期多校训练营7 A-xay loves connected graphs多项式&#xff1f…

微软推出 VS Code 新特性,为 TypeScript 和 JavaScript 用户提供 AI 辅助开发功能

除了开发人员非常喜欢的IntelliSense和代码完成之外&#xff0c;今年早些时候&#xff0c;微软还发布了IntelliCode&#xff0c;提供了一组 AI 辅助开发功能。VS Code 团队现在宣布了一项新的实验性扩展&#xff0c;将 IntelliCode 带给了 TypeScript 和 JavaScript 用户。VS C…

NC107617 poj3020 Antenna Placement

问题&#xff1a; n * m的矩阵&#xff0c;有一些障碍点&#xff0c;用12的骨牌覆盖所有非障碍点 (12骨牌可重叠&#xff0c;骨牌可越界&#xff0c;骨牌可延伸到障碍点) 问最少需要 多少个。 题解&#xff1a; • 尽量用一个骨牌覆盖两个格子&#xff0c;覆盖不了了再重叠使…

P7737-[NOI2021]庆典【tarjan,虚树】

正题 题目链接:https://www.luogu.com.cn/problem/P7737 题目大意 给出一张无向图满足若x⇒z,y⇒zx\Rightarrow z,y\Rightarrow zx⇒z,y⇒z那么有x⇒yx\Rightarrow yx⇒y或y⇒xy\Rightarrow xy⇒x。 qqq次询问给出起点和终点和kkk条临时的边&#xff0c;求可能经过点的数量 1…

货车运输(洛谷P1967)(倍增)

传送门 文章目录题目描述题目解析代码题目描述 题目解析 本题如果告诉你&#xff0c;城市形成了一棵树&#xff0c;是不是就迎刃而解了呢? 本题的关键就是把稠密图转化为一片森林&#xff08;就是可能有很多棵树啦&#xff09; 怎么转化呢? 考虑哪些边是没用的 如果AB已经可…

.NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架&#xff0c;具体为什么那样设计我也已经在第十篇文章中进行了说明。不过文章发布后很多人都说了这样的分层不是很合理&#xff0c;什么数据库实体应该跟仓储放在一起形成领域对象&#xff0c;什么ViewModel应…

P7736-[NOI2021]路径交点【LGV引理】

正题 题目链接:https://www.luogu.com.cn/problem/P7736 题目大意 有kkk层的图&#xff0c;第iii层有nin_ini​个点&#xff0c;每层的点从上到下排列&#xff0c;层从左到右排列。再给出连接相邻层的一些有向边&#xff08;从iii层连向i1i1i1层&#xff09;。 对于n1n_1n1​…

第1节 连通性强连通、割点和桥(一)

文章目录无向图割点、桥、双连通分量Tarjan算法求割点和桥&#xff08;割边&#xff09;代码&#xff1a;边双连通分量 和 点双连通分量代码边双连通分量 和 点双连通分量 的缩点有向图的弱连通与强连通强连通分量Kosaraju算法Tarjan算法代码&#xff1a;无向图割点、桥、双连通…

暗黑破坏神(背包)(内部模拟)

不开longlong见祖宗&#xff01;&#xff01;&#xff01; scanf要打成lld&#xff01;&#xff01;&#xff01;&#xff01; 解析 分层背包的类板子题&#xff0c;更新dp过程中记录路径&#xff0c;最后递归输出即可 然而—— 一开始被卡成了27分&#xff01;&#xff01;…

UOJ#454-[UER #8]打雪仗【通信题】

正题 题目链接:https://uoj.ac/problem/454 题目大意 AliceAliceAlice有一个长度为2n2n2n的010101串&#xff0c;BobBobBob有nnn个在[1,2n][1,2n][1,2n]位置的下标表示它想要得到010101串中这些位置的值&#xff0c;现在两个人可以向对方传输不超过mmm个0/10/10/1字符&#xf…