树状数组
GoLakerswxy
这个作者很懒,什么都没留下…
展开
-
POJ - 3468(水题)树状数组区间修改区间查询模板
ou have N integers, A1, A2, ... , AN"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000."Q a b" means querying the sum of Aa, Aa+1, ... , Ab.#include<cstdio>#include<i...原创 2018-06-05 20:38:32 · 272 阅读 · 0 评论 -
codeforces 540E Infinite Inversions(离散化+树状数组)
题目:一个无限数列,1,2,3,4,...,....,给n个数对<i,j>把数列的i,j两个位置的元素交换。求交换后数列的逆序对数。 思路:离散点并且把两点之间的m个数当作一个数来看记下贡献,然后就是普通的树状数组求逆序对,需要用long long!#include <bits/stdc++.h>using namespace std;typedef l...原创 2018-08-26 21:31:28 · 259 阅读 · 0 评论 -
牛客网多校5 F.take (树状数组)
题目:有n个盒子,每一个盒子i有p[i]的概率开出d[i]大的钻石,现在持大小为0的钻石,依次从1~n打开箱子,如果箱子内的钻石比手中的大时就交换。求交换次数的期望。思路:交换的前提是其前面比这个大的钻石都没打开,当前这个开出了钻石,所以可以先从大的钻石考虑,用树状数组维护一下大钻石造成的影响。题目给的输入输出格式中间计算要用逆元。#include<bits/stdc++.h>...原创 2018-08-03 15:33:30 · 177 阅读 · 0 评论 -
hdu 6393 Traffic Network in Numazu(最短路,树状数组,lca,欧拉序)
题目:给你一个n边n点的无向连通图,两个操作,操作一改变某个边的权值,操作二查询某两个点之间的最短路径长度。思路:在环上拿出一条边来放一边,搞一棵树出来,因为两点间最短距离就是是两点各自到根的距离之和减去 2*两点的lca到根的距离。 修改操作就变为维护点到根的这条链上的权值,差分得到欧拉序,用树状数组维护。查询的时候直接查询距离,再加上拿出来的那条不用的边情况,取最小即可。找了好久的...原创 2018-08-14 15:05:24 · 291 阅读 · 0 评论 -
HDU-6348 序列计数(dp+树状数组)
题目:度度熊了解到,1,2,…,n 的排列一共有 n!=n×(n−1)×⋯×1 个。现在度度熊从所有排列中等概率随机选出一个排列 p1,p2,…,pn,你需要对 k=1,2,3,…,n 分别求出长度为 k 的上升子序列个数,也就是计算满足 1≤a1 < a2 < … < ak ≤n 且 pa1 <pa2< … < pak 的 k 元组 (a1,a2,…,ak) ...原创 2018-08-06 11:23:16 · 427 阅读 · 0 评论 -
牛客网多校5 H subseq (树状数组)
题目:给定一个序列 a[1..n],求下标字典序第 k 小的严格递增子序列 1<=n<=10^5 0<=k<=10^(18)思路:考虑逐位确定,每次大概要算 a[i…n] 中,第一项 >=x 的严格递增子序列的个数,这个可以用一个可持久化线段树或者树状数组维护。#include <bits/stdc++.h>using namespa...原创 2018-08-05 11:04:10 · 199 阅读 · 0 评论 -
牛客网多校5 I-vcd (树状数组)
题目:有 n 个点,一个点集 S 是好的,当且仅当对于他的每个子集 T,存在一个右边无限长的矩形,使得这个矩形包含了 T,但是和 S-T 没有交求这 n 个点里有几个好的点集 1<=n<=10^5思路:对于 |S|=1,他显然是好的对于 |S|=2,只要两个点的 y 坐标不相同,那么这个集合也是好的对于 |S|=3,三个点的形状必须是 < 型。用树状数组统计,按x...原创 2018-08-04 11:47:42 · 182 阅读 · 0 评论 -
牛客网多校2 farm(巧妙的随机数hash,前缀和/二维树状数组)
题目:给出一个N*M的矩阵药田,药田中每个格子都种有一种编号的为1~N*M的药,随后一个T表示有T次浇水操作,之后先是给出N行M列的矩阵(药田),再给出T行,每行有5个数,X1,Y1,X2,Y2和W,表示这次操作会在左上角为(X1,Y1),右下角为(X2,Y2)的矩阵中浇W这种药水,若是该某个药格中的药编号与被浇到的药水不同,则死亡,问你T次浇水操作后整个药田死了多少颗药?思路:这里对每个药的...原创 2018-07-22 15:09:53 · 373 阅读 · 0 评论 -
牛客网多校5 D-inv(树状数组 思维)
题目:给一个n以内所有偶数的排列,将有序(从小到大1,3,5......n-1)的奇数列插入到偶数列中,使得形成的逆序对最少。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+10;int c[maxn],n,a[maxn];int lowbit(int...原创 2018-08-24 20:11:30 · 200 阅读 · 0 评论 -
hdu6278-Just h-index(莫队+树状数组+二分)
题目连接给你一个长度为n的序列a(1=<a[i]<=n),m次询问,每次求(l , r)区间内最大的h,使得至少h个数的值都大于等于h。莫队+树状数组维护前缀和+二分查询。#include <bits/stdc++.h>using namespace std;const int maxn=1e5+100;struct node{ int l,r,id;}s...原创 2018-07-15 12:22:16 · 401 阅读 · 0 评论 -
牛客网多校1 Different Integers(莫队或树状数组)
给你一个数组, 长度n<=1e5, q次询问(l, r), 输出区间[1, l], [r, n]中不同数字的个数, q<=1e5莫队 简单粗暴:#include <bits/stdc++.h> using namespace std;const int maxn=1e5+10;struct node{ int l,r,id;}s[maxn];i...原创 2018-07-20 09:12:23 · 211 阅读 · 0 评论 -
hdu 5517二维树状数组
给你n个二元组<a,b>, m个三元组<c,d,e>. 如果d = e,那么<a,c,d>会组成一个新的三元组集合G.问G中有多少个三元组在凸点.(没有其它三元组比它大)要注意去重. 因为要求没有其它三元组比它大. 如果同一个b有多个a,那么只需要取最大的即可.然后通过排序可以解决第一位a. 剩下两位c,d则可以通过二维树状数组来维护是否是最大值.三元组G中相同...原创 2018-05-13 22:37:12 · 201 阅读 · 0 评论 -
HDU - 5869 Different GCD Subarray Query(树状数组或线段树+rmq)
题目:给你一组数, 然后是m个查询. 问[l,r]中所有连续区间共有多少不同的GCD思路:每个数往两边扩找不同的gcd,最多能找log个,gcd就会变成1。一开始想的是rmq处理出以每个数为起点往左往右扩展开的首次出现与上一次不同的gcd位置,然后离线用莫队来搞,时间复杂度很高,当时没有想到别的思路,然后敲完后一直re.....事实上这个题应该是线段树或者树状数组,很套路的一个做法。把查询...原创 2018-08-31 18:12:45 · 282 阅读 · 0 评论