数据结构-树状数组/线段树
文章平均质量分 55
Toooooocold
这个作者很懒,什么都没留下…
展开
-
Codeforces 501D Misha and Permutations Summation
康托展开后的两个序列相加后 Mod(n!) 即为一个新的康托展开的序列,不过每一位都要考虑是否要进。因为n过大,所以用树状数组进行康托展开。而逆康托展开时,可以用二分查询,m-sum(m)是非降序列。代码:#includebits/stdc++.h>using namespace std;const int MAXN = 2e5+5;int n, a[MAXN]原创 2016-12-05 18:02:22 · 343 阅读 · 0 评论 -
【带权中位数】CodeForces 1053C Putting Boxes Together
Source:Source:Source:Codeforces Round #512 (Div. 1, based on Technocup 2019 Elimination Round 1)Probelm:Probelm:Probelm:n=2e5个物品从左到右排列,第i个物品的位置pos[i],重量w[i]。每次询问如果将pos[l]…pos[r]这段物品移到某个连续区间[x, x+(r-l...原创 2018-10-02 15:27:07 · 278 阅读 · 0 评论 -
【分治+线段树】HDU6328 Rectangle Radar Scanner
Souce:Souce:Souce:2018 Multi-University Training Contest 3 Problem:Problem:Problem:二维平面上给出n=1e5个有权值w=1e9的点,且x坐标刚好从1到n各不相同,1<=y<=n。现在m=1e6的询问,每个询问给出一个矩形,问矩形内所有点的权值积、最大值、最小值。 Idea:Idea:Idea:查询离线...原创 2018-08-03 17:10:40 · 435 阅读 · 0 评论 -
【循环节+线段树】ZOJ4009 And Another Data Structure Problem
Source:Source:Source:151 - ZOJ Monthly, March 2018 Problem:Problem:Problem: 1 l r: Change (al,al+1,…,ar)(al,al+1,…,ar)(a_l, a_{l+1}, \dots, a_r) to (a3l,a3l+1,…,a3r)(al3,al+13,…,ar3)(a_l^3, ...原创 2018-03-10 22:47:36 · 523 阅读 · 0 评论 -
HDU 6203 ping ping ping
如果注意到按照lca的深度来贪心,当前u,v走得通就取那个lca,使得他的子树都无法再连出去,那么结果一定是最优的,剩下的用树状数组或者线段树维护下就好了。原创 2017-09-13 14:04:02 · 818 阅读 · 0 评论 -
CS Academy Round #32 Light Count
内存限制了12MB.所以输入是题目给的随机数。数据大小是5*10^7,可以将其分成781250份,每份一个ULL表示状压,最后树状数组做。学到了__builtin_popcountll(),快速得到一个二进制数中有几个1.代码:#include#define pb push_back#define fi first#define se secondusing nam原创 2017-06-11 15:31:13 · 341 阅读 · 0 评论 -
Codeforces 380C Sereja and Brackets
两种做法。树状数组的做法:事先将所有的查询存下来,这样从左往右求值的时候就不会被查询区间右边的括号所影响了。代码:#include#define pb push_back#define fi first#define se secondusing namespace std;typedef long long ll;typedef unsigned long long原创 2017-06-13 15:52:22 · 318 阅读 · 0 评论 -
AtCoder 077E gururu
咕噜噜。容易发现每个设定值对每段区间的贡献为f(s, t, xi) = xi - (s+1)f(s, t, xi+1) = xi+1 - (s+1)(s 类似树状数组维护区间修改,用两个区间分别维护xi的前缀和以及(s+1)的前缀和。代码:#include#define pb push_back#define fi first#define se seco原创 2017-07-01 23:07:23 · 611 阅读 · 0 评论 -
HDU 6070 Dirt Ratio
官方题解:这个维护的最小值即 size(L, R)+Mid*L代码:#include<bits/stdc++.h>#define fi first#define se second#define pb push_back#define CLR(A, X) memset(A, X, sizeof(A))#define lson o<<1#define rson o<<1|1using n原创 2017-08-03 22:17:12 · 323 阅读 · 0 评论 -
HDU 6133 Army Formations
官方题解:BestCoder Blog| 2017 Multi-University Training Contest 8 solutions BY 南京大学原创 2017-08-20 11:42:56 · 259 阅读 · 0 评论 -
UVALive 5902 Movie collection
把stack倒着看,把一个元素放到最顶上即把这个元素放到最低部#includeusing namespace std;const int MAXN = 2e5+5;int c[MAXN], a[MAXN];int lowbit(int x) { return x&-x; }void add(int x, int add) { while(x < MAXN) {原创 2017-01-24 15:51:02 · 191 阅读 · 0 评论 -
【线段树】Gym101620I Intrinsic Interval
Source:Source:Source:2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)Problem:Problem:Problem:n=1e5n=1e5n=1e5的全排列。定义一个区间是好区间当区间内的值域是连续的,即mx−mn=R−Lmx-mn=R-Lmx−mn=R−L。mmm个查询[li,ri][l_i, r_i...原创 2018-10-04 21:05:33 · 431 阅读 · 0 评论