树状数组
Cyhlnj
这个作者很懒,什么都没留下…
展开
-
动态逆序对
CDQ分治 把删除转变为逐个添加,于是就变成了三维偏序问题 时间,位置,大小 分两遍统计即可# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# defi原创 2017-12-19 19:28:33 · 427 阅读 · 0 评论 -
Bzoj2738: 矩阵乘法
题面Bzoj权限题 luoguSol整体二分+二维树状数组裸题。。。二维树状数组写错了WAWAWA两遍。。。# include <bits/stdc++.h># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace s...原创 2018-04-12 22:21:17 · 234 阅读 · 0 评论 -
Bzoj4540: [Hnoi2016]序列
题面传送门Sol处理出每个数aiaia_i之前第一个比它小的数al−1al−1a_{l-1}和后面第一个比它小的数ar+1ar+1a_{r+1} 那么左端点在[l,i][l,i][l,i]右端点在[i,r][i,r][i,r]的区间的最小值都是aiaia_i把它看成是一个顶点(l,r)(l,r)(l,r)和(i,i)(i,i)(i,i)的矩形内的加法,每个数加上aiaia_i...原创 2018-04-12 19:00:42 · 276 阅读 · 0 评论 -
Luogu3242:[HNOI2015]接水果
题面Luogu3242Sol考虑每个盘子怎样才能接到一个水果 分两种情况: 盘子的x,yx,yx, y在一条链上,那么水果的两点就要在这条链之外 不在的话,水果的两点就分别在盘子的两点的子树中 记录下每个点的dfsdfsdfs序,和这棵子树结束的dfsdfsdfs序 发现上述讨论就是相当于求水果这个点(x,y)(x,y)(x, y)包含它的二维矩阵(盘子)有多少个...原创 2018-02-06 18:43:38 · 384 阅读 · 0 评论 -
SPOJ1825:Free tour II
题意luogu的翻译 给定一棵n个点的树,树上有m个黑点,求出一条路径,使得这条路径经过的黑点数小于等于k,且路径长度最大Sol点分治辣 如果是等于kkk的话,开个桶取maxmaxmax就好了 而小于等于kkk,就可以把桶换成树状数组,求前缀maxmaxmax 很慢能过# include <bits/stdc++.h># define RG regis...原创 2018-02-26 19:05:19 · 253 阅读 · 0 评论 -
Luogu4175:[CTSC2008]网络管理Network
题面Luogu4175:[CTSC2008]网络管理NetworkSol路径第k" role="presentation" style="position: relative;">kkk大 无解直接判断就好了 然后整体二分,加上树链剖分+树状数组统计# include # define RG register# define IL inline# define Fil原创 2018-02-06 18:34:22 · 333 阅读 · 0 评论 -
Luogu3527:[POI2011]MET-Meteors
题面LuoguSol整体二分 比较简单,当练手题 每次树状数组统计# include # define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(3e5 +原创 2018-02-06 18:25:50 · 298 阅读 · 0 评论 -
Poj3321 Apple tree
翻译(复制的):卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果。卡卡很喜欢苹果。树上有N个节点,卡卡给他们编号1到N,根的编号永远是1.每个节点上最多结一个苹果。卡卡想要了解某一个子树上一共结了多少苹果。现在的问题是不断会有新的苹果长出来,卡卡也随时可能摘掉一个苹果吃掉。你能帮助卡卡吗?Input输入数据:第一行包含一个整数N(N<=100000),表示树上节点的数目。接下来N-1行,每行包含原创 2017-07-01 22:00:50 · 465 阅读 · 0 评论 -
Bzoj1046: [HAOI2007]上升序列
题面传送门Sol先求出最长上升序列,倒着求,然后贪心的往后选,选满足的 求最长上升序列我用的是树状数组# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long l原创 2018-01-25 21:33:34 · 185 阅读 · 0 评论 -
Bzoj3529: [Sdoi2014]数表
题面传送门Sol先不管aa的限制 设f(n)f(n)表示f的约数和(据说是σ据说是\sigma),它是个积性函数(筛法),nmn则题目要求的就是∑ni=1∑mj=1f(gcd(i,j))\sum_{i=1}^{n}\sum_{j=1}^{m}f(gcd(i, j))考虑每个gcdgcd的贡献,∑ni=1f(i)∑⌊ni⌋j=1μ(j)⌊ni∗j⌋⌊mi∗j⌋\sum_{原创 2018-01-17 10:57:47 · 219 阅读 · 0 评论 -
CDQ分治 陌上花开(三维偏序)
CDQ分治或树套树可以切掉 CDQ框架:先分计算左边对右边的贡献再和所以这个题可以一维排序,二维CDQ,三维树状数组统计 CDQ代码# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# def原创 2017-12-19 19:34:52 · 451 阅读 · 0 评论 -
四维偏序
CDQ套CDQ或者CDQ套树套树 前者快于后者然而我写了后者# include <stdio.h># include <stdlib.h># include <iostream># include <algorithm># include <string.h># define IL inline# define RG register# define Fill(a, b) memse原创 2017-12-19 19:37:09 · 568 阅读 · 0 评论 -
Bzoj1901 Dynamic Ranking
动态区间第k小那么每个点开一棵线段树(主席树)再套一个树状数组在外面每次询问区间内的树的个数时 相当于进行了一次树状数组求区间和的操作,只是是把树状数组那个点看做主席树,对log棵主席树求区间和然后每次询问,修改时就是把log棵主席树同时跳到儿子,修改也是log棵时间复杂度O(nlogn*logn)空间复杂度O(nlogn*logn)# include <bits/stdc++.h># defi原创 2017-12-23 11:09:42 · 244 阅读 · 0 评论 -
Bzoj 3196 二逼平衡树
树状数组套线段树(值域线段树)记得离散化# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;const int _(2e5 + 10), __(5e6 + 10), INF原创 2018-01-05 17:27:33 · 272 阅读 · 0 评论 -
Bzoj3289: Mato的文件管理
题面传送门Sol求区间逆序对个数,离线莫队搞,开树状数组统计,记得开longlonglonglong 不然WA无数遍不知道为什么# include # define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef原创 2018-01-22 20:15:20 · 271 阅读 · 0 评论 -
[ZJOI2006]书架(树状数组水过)
这道题显然平衡树,splay,treap什么的随便切 然而我不想打,决定水过这道题 把空间开3倍,树状数组维护它前面的树的个数,开个id数组记录位置 找一个数排名直接二分加求前缀和,log^2的搞一搞 把一个数放在顶/低 直接丢在当前顶/低的前后就可以了不然开3倍数组干嘛 c常数小堪比log的平衡树居然还快一些# include <bits/stdc++.h># define RG r原创 2018-01-04 16:43:42 · 356 阅读 · 1 评论 -
[Noi2011]阿狸的打字机
题面传送门Sol首先有个很显然的暴力,构建AC自动机 每次询问x,yx, y就yy暴跳trie中的父亲trie中的父亲,跳fail跳fail检查是否有xx的结尾# include # define RG register# define IL inline# define Fill(a, b) memset(a, b, sizeof(a))using namespace原创 2018-01-21 20:08:51 · 234 阅读 · 0 评论 -
BZOJ4815: [Cqoi2017]小Q的表格
传送门重点 111f(a,a+b)a(a+b)=f(a,b)ab=f(a,b−a)a(b−a)=f(a,b&nbsp;mod&nbsp;a)a(b&nbsp;mod&nbsp;a)=f(d,d)d2\frac{f(a,a+b)}{a(a+b)}=\frac{f(a,b)}{ab}=\frac{f(a,b-a)}{a(b-a)}=\frac{f(a,b~mod~a)}{a(b~mod~a)}=\...原创 2018-12-24 16:30:57 · 237 阅读 · 1 评论