树状数组
lemonoil
竞赛党一枚
展开
-
LA 4329 Ping pong [树状数组]
题目传送门这道题与树状数组求逆序对的思路有些近似,是一道树状数组求前缀的基础题目。我们枚举第i个人当裁判的话,假设a1到a[i-1]中有ci个比ai小,那么就有(i-1)-ci个比ai大,同理,假设a[i+1]到an中有di个比ai小,那么就有(n-i)-di个比ai大,然后根据乘法原理和加法原理,i当裁判有ci(n-i-di)+(i-ci-1)*di,这样问题就转化为求c,d的值#include<原创 2017-07-11 07:55:13 · 377 阅读 · 0 评论 -
BZOJ 1145 图腾totem [算术计数][树状数组]
题目连接f[1324]-f[1243]-f[1432] =(f[1x2x]-f[1423])-(f[12xx]-f[1234])- (f[14xx]-f[1423]) =f[1x2x]-f[12xx]+f[1234]-f[14xx] =f[1x2x]+f[1234]-(f[14xx]+f[12xx]) =f[1x2x]+f[1234]-(f[1xxx]-f[13xx])thenf[1xx原创 2017-07-14 19:40:58 · 390 阅读 · 0 评论 -
HIHOCODER 1145 幻想乡的日常 [树状数组][离线]
题目传送门1145 : 幻想乡的日常时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 幻想乡一共有n处居所,编号从1到n。这些居所被n-1条边连起来,形成了一个树形的结构。每处居所都居住着一个小精灵。每天小精灵们都会选出一个区间[l,r],居所编号在这个区间内的小精灵一起来完成一项任务。特别的,居所相邻的(有边相连的)两个小精灵会自发的组成一队,并且如果a和b相邻原创 2017-07-14 20:48:46 · 292 阅读 · 0 评论 -
BZOJ 1935 Tree 园丁的烦恼 [差分][树状数组]
#include<cstdio> #include<algorithm> using namespace std; #define N 500005 #define X 10000005 inline int in(int x=0,char ch=getchar()){while(ch>'9'||ch<'0') ch=getchar(); while(ch>='0'&&ch<='9') x=原创 2017-07-14 22:04:14 · 546 阅读 · 0 评论 -
BZOJ3236 作业 [莫队算法][树状数组]
先用莫队离线对询问排序后维护两个树状数组,记录两个询问的答案,对于第二个询问,可以再开一个数组,记录每个数出现的次数。#include<bits/stdc++.h> #define lowbit(x) (x&-x) using namespace std; const int N = 100005; int n,m,a[N],ans1[N*10],ans2[N*10],cf[N],cs[N],num原创 2017-09-20 12:24:37 · 318 阅读 · 0 评论