![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
phantompiupiupiu
这个作者很懒,什么都没留下…
展开
-
POJ 2299 树状数组
第一次自己在题里遇到了离散化,也就是这个东西困了我好久的,离散化一般的处理感觉好多种的写法,但是有好有坏,选择合适的写法写即可。1. for(int i=1;i { scanf("%lld",&a[i]); p.push_back(a[i]); } sort(p.begin原创 2016-08-29 19:48:54 · 335 阅读 · 0 评论 -
POJ 2352 树状数组
这个树状数组写起来就轻松多了。因为这个点的输入的要求比较特殊,刚好都已经构成了写树状数组的要求,实际上只需要把数据直接进行树状数组的add和sum操作即可。可以模拟很轻松得到逻辑的答案,唯一要注意的就是这些点坐标是从0开始的,处理一下就好了。#include#include#includeusing namespace std;const int maxn=32010;int n原创 2016-08-29 19:52:44 · 339 阅读 · 0 评论 -
POJ 1195 二维树状数组
二维树状数组的模版题。写这个题的时候注意不要把a数组直接理解为普通的二维矩阵,了因为i和j的累加和累减方式不同,所以实际上不是一格格的跑的。应该按照一维的树状数组的推广来理解即可。#include#include#includeusing namespace std;const int maxn=2000;int num,n,x,y,z,h;int a[maxn][maxn]原创 2016-08-29 19:55:13 · 284 阅读 · 0 评论 -
UVa 1428
#include#include#includeusing namespace std;const int maxn=100010;int t,n,maxs;int a[maxn],x[maxn],c[maxn],p[maxn],q[maxn];int lowbit(int x){ return x&-x;}int sum(int x){ int r=原创 2016-08-11 22:40:51 · 177 阅读 · 0 评论 -
POJ 2155 二维数组
这题和前面的1195有点类似,也就让我发现了二维树状数组的题好像都有这种特点,就是矩阵的重叠需要加减来实现抵消。极力推荐这篇文章:http://download.csdn.net/detail/lenleaves/4548401点击打开链接#include#include#includeusing namespace std;const int maxn=1010;int x,n原创 2016-09-02 22:06:52 · 215 阅读 · 0 评论