树状数组
gjghfd
这个作者很懒,什么都没留下…
展开
-
bzoj3289 -- 莫队+树状数组
离线。将大小离散,然后用莫队更新树状数组和答案就可以了。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 50010 8 #define lowbit(x) x&-x 9 struct Node{10 int l,r,f;11原创 2017-05-26 16:45:07 · 293 阅读 · 0 评论 -
[ 康托展开 树状数组 ] Codeforces504B Misha and Permutations Summation
利用康托展开可以在排列与变进制数间转化,其中变进制数就是从低到高第 iii 位的权值为 i!i!i! 的数。求答案时二分一下就好了。#include<bits/stdc++.h>using namespace std;const int N=200010;int n,m,x,k;int a[N];int c[N];int main() { scanf("%d",...原创 2018-03-29 20:22:13 · 281 阅读 · 0 评论 -
[ 树状数组 ] BZOJ5170
BZOJ3580的简化版。 记 fifif_i 表示第 iii 个数前面比它大的数的个数。 若 fi≤kfi≤kf_i\le k ,在 kkk 次操作后它前面所有数一定都比它小,否则它最终的位置为 i−ki−ki-k 。 把所有 fi≤kfi≤kf_i\le k 的数排一遍序,依次放入没有数的位置就好了。#include<bits/stdc++.h>using namesp...原创 2018-02-24 21:09:09 · 379 阅读 · 0 评论 -
[ 后缀自动机 树上启发式合并 线段树 树状数组 ] [ 雅礼集训 2017 Day7 ] LOJ#6041
对原串建后缀自动机,222 个前缀的最长公共后缀就是其反串的后缀树中对应点的 lcalcalca 的 lenlenlen 值。 现在问题转化为:给定一棵树,求编号在 [l,r][l,r][l,r] 的 222 个点的 lcalcalca 的最大深度。 考虑一个暴力的做法:枚举树上每个点作为 lcalcalca ,将其子树中所有点按编号排序,那么对于每个点,离它最近的 222 个点一定是最优的,...原创 2018-03-07 07:05:28 · 431 阅读 · 0 评论 -
[ 线段树 树状数组 ] Codeforces935F Fafa and Array
先考虑询问。 对于边界的点直接更新答案。 对于不在边界上的点:若 ai−1≤aiai−1≤aia_{i-1}\le a_i 且 ai+1≤aiai+1≤aia_{i+1}\le a_i ,增大 aiaia_i 时答案的增加量为 2x2x2x 。若 aiaia_i 在 ai−1ai−1a_{i-1} 和 ai+1ai+1a_{i+1} 之间,设 t=max(ai−1,ai+1)−ait=...原创 2018-02-27 10:54:53 · 359 阅读 · 0 评论 -
[ 树状数组 线段树 ] BZOJ3333
可以发现,一次操作后只有出队的人的逆序对数会改变。预处理出每个人与其后面的人行成的逆序对数,线段树维护身高最小值就好了。 总复杂度 O(nlogn)O(n\log n) 。#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;inline char nc(){原创 2018-01-03 15:18:29 · 248 阅读 · 0 评论 -
[ 莫队 树状数组 ] [ AHOI2013 ] BZOJ3236
%%%PBS大佬教我莫队cmp函数更快的写法。#include<bits/stdc++.h>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:原创 2017-12-01 20:18:12 · 1375 阅读 · 0 评论 -
[ 树状数组 ] BZOJ5055
先求出 bi=ai×∑ij=1[aj<ai] ajb_i=a_i \times \sum_{j=1}^i [a_j<a_i]~a_j ,ci=ai×∑ij=2[aj<ai] bjc_i=a_i \times \sum_{j=2}^i [a_j<a_i]~b_j 。 然后答案就是 cic_i 的和。离散后树状数组统计就好了。#include<cstdio>#include<cstring>#in原创 2017-12-25 15:01:15 · 213 阅读 · 0 评论 -
[ DP 树状数组 dfs序 倍增 ] Codeforces856D Masha and Cactus
%%%LargestJN 令 fif_i 表示点 ii 子树的答案,sis_i 表示点 ii 所有儿子的答案减去 fif_i。 假如点 ii 不在环上,答案就是 ii 的所有儿子的 ff 和。 假如点 ii 在环上,对于所有LCA是 ii 的边 (x,y)(x,y),假如选了这条边,答案就是 xx 到 ii , yy 到 ii 路径上 sjs_j 之和加上点 ii 所有儿子的答案之和。原创 2017-10-18 15:33:54 · 349 阅读 · 0 评论 -
Codechef June Challenge 2014 #Sereja and Arcs -- 容斥 + 阈值 + 树状数组
传送门题目大意数轴上有 nn 个点,给你每个点的坐标和颜色。相同颜色的每对点A(x,0),B(y,0)A(x,0),B(y,0)会产生一个直径为ABAB的圆。求有多少对颜色不同的圆相交。容斥。将问题转化为求有多少对颜色不同的圆不相交。 将相同颜色的点用同一个字母表示,那么只有AABBAABB和ABBAABBA是满足条件的。考虑AABBAABB的情况: 从左到右枚举每个点作为右端点。O(n)O(n原创 2017-08-15 15:27:15 · 595 阅读 · 0 评论 -
bzoj1901 [ Zju2112 ] --树状数组套主席树
树状数组套主席树模板题。。。题目大意:给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对改变后的a继续回答上面的问题。你需要编一个这样的程序,从输入文件中读入序列a,然后读入一系列的指令,原创 2017-05-26 16:41:15 · 239 阅读 · 0 评论 -
bzoj1878 [ SDOI2009 ] --离线+树状数组
这题在线做很麻烦,所以我们选择离线。首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置。然后对与每种颜色第一次出现的位置x,将a[x]++。将每个询问按左端点排序,再从左往右扫,将next[i]++,如果是询问就先返回sum[r]-sum[l-1](sum是a的前缀和)。其中前缀和可以用树状数组维护。因为做一个询问之前l到r的所有颜色都加且仅加了1,所以答案就是su原创 2017-05-26 16:40:30 · 316 阅读 · 0 评论 -
codeforces293E Close Vertices -- 点分治+树状数组
题目大意:给出一棵树,每条边有权值,求经过少于l条边,权值和少于w的路径总数。 点分治。每次求出所有点到重心的距离,按w排序,然后维护一个树状数组,记录经过的边 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 inline char nc(){ 7 static char原创 2017-05-26 16:42:19 · 247 阅读 · 0 评论 -
bzoj2716 [ Violet 3 ] --cdq分治+树状数组
树状数组打错调了一个小时。。。对于点(x,y),其它点只会在他的左下、右下、左上、右上四个方向上。我们只需求在左下方向上就可以了,因为其他方向可以通过改变相对位置求得。考虑cdq分治。先按x坐标排序,然后将区间[l,r]分为[l,mid],[mid+1,r],因为只求左下方向上的点,所以可以去掉绝对值:dis=x+y-(x'+y')只需求x'+y'最大的点就可以了。求(X,Y)时将[l,mi原创 2017-05-26 16:42:40 · 423 阅读 · 0 评论 -
[ 杂题 树状数组 ] VK Cup 2018 - Round 2 Codeforces924D Contact ATC
假设当风力为 −w−w-w 时,点 iii 在 titit_i 时刻经过 000,当风力为 www 时在 t′iti′t_i' 时刻经过 000 。 显然在风力从 −w−w-w 变化为 www 的过程中,点 iii 经过 000 的时刻也会从 titit_i 变到 t′iti′t_i' ,而且这个过程是连续的。 对于点 i,ji,ji,j ,考虑什么时候满足条件。若 ti=tjti=tjt_i...原创 2018-03-28 18:15:31 · 484 阅读 · 0 评论