树状数组
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
-
United Cows of Farmer John G
题目链接:United Cows of Farmer John G我们考虑枚举每个右端点。然后前面合法的左端点是哪些呢?假设当前位置为 R,上一次出现位置为L,如果未出现当成0那么我们对于一些出现多次的数字,肯定只能取最右边那个。所以就是区间不同数字的种类数,fenwick即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long long原创 2021-06-06 22:48:20 · 317 阅读 · 2 评论 -
Trailing Zeros
题目链接:Trailing Zeros二进制当中0的数量最少,实际上就是2的因子数量最少。所以显然按照2的因子个数从大到小排序。然后最小的交换次数显然就是逆序数。注意如果两个数字的因子数量相同,应该按照本身的顺序。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N原创 2021-01-22 13:49:47 · 260 阅读 · 0 评论 -
逆序异或和
题目链接:逆序异或和逆序异或直接无法维护,考虑拆二进制位,就是普通逆序对问题了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10;int n,m,a[N]; long long res;struct Fenwick{ int d[N]; in原创 2020-09-16 21:42:33 · 222 阅读 · 1 评论 -
Codeforces - Thwarting Demonstrations
题目链接:Codeforces - Thwarting Demonstrations显然可以二分,然后利用前缀和check即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=1e5+10;int n,k,d[N],a[N],l=-1e14,r=1e14,m;v原创 2020-07-17 16:45:45 · 203 阅读 · 0 评论 -
夜游 ECNU
题目链接:夜游 ECNU显然有一个n*n的dp方程。但是我们可以按照x排序,之后用fenwick维护y的前缀和,然后计数即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=2e5+10,mod=1e9+7;int n,d[N],m,res[N];stru原创 2020-06-30 23:54:35 · 236 阅读 · 0 评论 -
骚区间
题目链接:骚区间显然我们对每个左端点,可以ST表上二分,找到对应的合法右端点区间。然后枚举右端点,可以在ST表上二分,找到合法的左端点区间,我们把左端点区间排序一下,维护当前合法的左端点位置,然后fenwick上面查询即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const原创 2020-06-26 22:09:19 · 261 阅读 · 0 评论 -
Codeforces - Fountains
题目链接:Codeforces - Fountains做法挺多的。直接枚举当前选的一个,然后另一个从前面选即可。然后动态维护前缀max,Fenwick tree即可。注意要么不选,要么就要选2个。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=1e5+10原创 2020-06-23 18:11:13 · 230 阅读 · 0 评论 -
Guessing Camels
题目链接:Guessing Camels把每个数字在分别三个数组出现的位置当成三个维度的下标。那么问题就变成一个三维偏序了,cdq分治即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=2e5+10;int n,a[N],b[N],c[N],d[N]; l原创 2020-06-11 19:24:23 · 276 阅读 · 0 评论 -
贪婪大陆
题目链接:贪婪大陆显然因为每一次放的地雷都是不同的。所以我们把地雷看成线段,就是多少个线段与当前区间没有交集,用两个fenwick维护即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespa...原创 2020-04-30 10:48:31 · 465 阅读 · 0 评论 -
队爷的新书
题目链接:队爷的新书显然线段分成了很多个区间,进而对每个区间取右端点最优。进而想到离散化。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=2e5+10...原创 2020-04-16 18:34:18 · 226 阅读 · 0 评论 -
[GZOI2017]配对统计
题目链接:[GZOI2017]配对统计其实我们把绝对值当成坐标轴的距离,就可以发现其实就是最近点对的个数。然后排序之后,每个找最近的对。然后离线求解。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing n...原创 2020-04-05 12:31:00 · 328 阅读 · 0 评论 -
[JSOI2009]计数问题
题目链接:[JSOI2009]计数问题对每一个颜色都开一个Fenwick即可。然后就没了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;const int N=310;...原创 2020-03-29 13:35:55 · 154 阅读 · 0 评论 -
[USACO17FEB]Why Did the Cow Cross the Road III G
题目链接:[USACO17FEB]Why Did the Cow Cross the Road III G直接容斥计算即可,总方案减去不合法的。什么是不合法呢?无交点,或者包含关系。用两个Fenwick维护一下左右端点即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++....原创 2020-03-29 11:35:37 · 269 阅读 · 0 评论 -
华华开始学信息学
题目链接:华华开始学信息学直接对区间分块,如果d很大暴力更新,否则d很小的时候打lazy标记。最后计算的时候,计算所有小的lazy对区间的影响。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespa...原创 2020-03-24 18:15:16 · 217 阅读 · 0 评论 -
出题人的手环
题目链接:出题人的手环显然,每次改变一个数字,逆序数改变只由这个数字影响,维护一下即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int N=2e5+10,mo...原创 2020-03-24 17:57:41 · 191 阅读 · 0 评论 -
take
题目链接:take直接考虑每一个钻石对期望的贡献。当前钻石可以贡献答案,那么前面所有比它大的钻石都没有替换。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace std;const int ...原创 2020-03-16 14:14:44 · 204 阅读 · 0 评论 -
HDU - 5792
题目链接:HDU - 5792我们可以用容斥的思想,先统计上升的二元组和下降的二元组。然后再减去a,b,c,d当中重合的情况。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longusing namespace std;...原创 2020-03-12 13:09:05 · 200 阅读 · 0 评论 -
[BJWC2018]第k大斜率
题目链接:[BJWC2018]第k大斜率显然可以二分答案,然后找大于当前答案的斜率个数。怎么判断呢?假设当前斜率为k,则:(yi-yj) / (xi-xj) > k假设xi>xj 则:yi-k*xi>yj-k*xj只要满足这个条件即可,其实我们可以发现,就是一个二维偏序。AC代码:#pragma GCC optimize("-Ofast","-funroll...原创 2020-03-06 21:27:59 · 1476 阅读 · 0 评论 -
Codeforce - Almost Difference
题目链接:Codeforce - Almost Difference水题,不过会爆long long,可以用long double来水一水。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>#define int long longusing namespace ...原创 2020-03-02 21:14:47 · 214 阅读 · 0 评论 -
Codeforces - Vasya and a Tree
题目链接:Codeforces - Vasya and a Tree如果是简单的子树加减,那么直接dfs序+Fenwick就可以解决。现在,子树加上了一个深度的限制。我们似乎可以从上到下,用主席树合并答案。实际上也是可以的。但是我们有一个简单的做法,就是利用dfs,每次进入子树的时候维护Fenwick,出子树的时候清除影响,就利用小空间达到和主席树一样的效果了。AC代码:#pragm...原创 2020-02-29 13:26:09 · 206 阅读 · 0 评论 -
Contest
题目链接:Contest正面去想:只需要枚举3种情况即可。反面去想:总方案-不贡献答案的对数。我采用的反面的做法,不贡献答案的对数就是三维偏序的对数。简单cdq分治即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long lo...原创 2020-02-26 17:58:22 · 280 阅读 · 0 评论 -
Codeforces - Pashmak and Parmida's problem
题目链接:Codeforces - Pashmak and Parmida’s problem前后分别扫一遍,就可以求出对于的f值。然后就变成一个逆序对的问题了。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long longus...原创 2020-02-12 16:35:06 · 195 阅读 · 0 评论 -
Codeforces - Mishka and Interesting sum
题目链接:Codeforces - Mishka and Interesting sum显然这个东西用莫队很好维护,但是复杂度很难卡常过去。我们考虑答案实际是什么?区间异或和 异或上 区间出现不同数字的异或和 。因为区间异或和异或出来的都是奇数的贡献,然后再异或,就把奇数异或掉了。区间异或和,直接前缀和就可以完成。区间出现不同数字的异或和,我们可以用fenwick维护前缀异或和。A...原创 2020-02-03 19:19:10 · 161 阅读 · 0 评论 -
牛客挑战赛36 - 纸飞机
题目链接:牛客挑战赛36 - 纸飞机题目描述直线上有n座山峰,第i座的高度为hi。从某座山峰上放飞一架纸飞机,它可以从左往右依次经过一系列高度严格递减的山头。假设五座山峰的高度依次是3,4,3,2,1。从第一座山峰上放飞的纸飞机可以依次经过第一、四、五座山峰,但不能经过第二、三座山峰。对于每座山峰,求出要经过除这座山峰外的每座山峰,至少需要放飞多少纸飞机。(每架纸飞机的起点可以不同)输...原创 2020-01-18 11:51:34 · 515 阅读 · 4 评论 -
Codeforces - Messenger Simulator
题目链接:Codeforces - Messenger Simulator我们考虑最前面的位置,当且仅当当前这个人往前面走的时候才会往前,否则无论如何位置要么不变,要么往后移动。所以我们考虑最后的位置即可。最后的位置其实就是看前面有多少人,那么我们可以用树状数组维护前面多少人即可,因为都是往前面移动,所以我们最开始的位置从m+1开始即可。AC代码:#pragma GCC optimize...原创 2020-01-15 14:31:17 · 234 阅读 · 0 评论 -
小魂和他的数列
题目描述一天,小魂正和一个数列玩得不亦乐乎。小魂的数列一共有n个元素,第i个数为Ai。他发现,这个数列的一些子序列中的元素是严格递增的。他想知道,这个数列一共有多少个长度为K的子序列是严格递增的。请你帮帮他,答案对998244353取模。对于100%的数据,1≤ n ≤ 500,000,2≤ K ≤ 10,1≤ Ai ≤ 109。输入描述:第一行包含两个整数n,K,表示数列元素的个...原创 2019-12-27 23:43:23 · 330 阅读 · 0 评论 -
华华和奕奕学物理
题目描述众所周知,9406计算机大佬众多,他们不仅代码能力强,而且都精通物理。物理无处不在,甚至坐电梯的时候,zck和xxr都在讨论若电梯突然失重会怎样。身为文科生的华华和奕奕非常难过,他们决定学习物理,不能让小伙伴们看不起。奕奕现在正在研究一道物理题。有Q次操作:若op1,输入v,t,m,表示在t时刻从无穷高处以初速度v垂直向下抛出一个质量为m的小球。若op2,输入v,t。表示询问t时刻...原创 2019-12-23 13:17:25 · 197 阅读 · 0 评论 -
51Nod 1711 平均数
LYK有一个长度为n的序列a。他最近在研究平均数。他甚至想知道所有区间的平均数,但是区间数目实在太多了。为了方便起见,你只要告诉他所有区间(n*(n+1)/2个区间)中第k大的平均数就行了。输入第一行两个数n,k(1<=n<=100000,1<=k<=n*(n+1)/2)。接下来一行n个数表示LYK的区间(1<=ai<=100000)。输出一行表...原创 2019-12-23 00:08:18 · 180 阅读 · 0 评论 -
Codeforces - D. Segment Tree
D. Segment Treetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputAs the name of the task implies, you are asked to do some work with segments a...原创 2019-12-20 14:47:58 · 520 阅读 · 0 评论 -
Tree
题目描述给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K输入格式N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 接下来是k输出格式一行,有多少对点之间的距离小于等于k输入输出样例输入 #1复制71 6 136 3 93 5 74 1 32 4 204 7 210输出 #1复制5说明/提示k\leq 20...原创 2019-12-12 14:49:24 · 223 阅读 · 0 评论 -
Codeforces Round602 - Optimal Subsequences
This is the harder version of the problem. In this version, 1≤n,m≤2⋅105. You can hack this problem if you locked it. But you can hack the previous problem only if you locked both problems.You are giv...原创 2019-11-25 00:52:00 · 262 阅读 · 0 评论 -
[HEOI2016/TJOI2016]树
题目描述在 2016 年,佳媛姐姐刚刚学习了树,非常开心。现在他想解决这样一个问题:给定一颗有根树,根为 11 ,有以下两种操作:标记操作:对某个结点打上标记。(在最开始,只有结点 11 有标记,其他结点均无标记,而且对于某个结点,可以打多次标记。)询问操作:询问某个结点最近的一个打了标记的祖先。(这个结点本身也算自己的祖先)你能帮帮她吗?输入格式第一行两个正整数 NN 和 QQ 分别...原创 2019-11-21 17:50:35 · 232 阅读 · 0 评论 -
[HEOI2012]采花
题目描述萧薰儿是古国的公主,平时的一大爱好是采花。今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花。花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一排的,以便于公主采花。公主每次采花后会统计采到的花的颜色数,颜色数越多她会越高兴!同时,她有一癖好,她不允许最后自己采到的花中,某一颜色的花只有一朵。为此,公主每采一朵花,要么此前已采到此颜色的花,要么有相当正确...原创 2019-11-15 00:44:22 · 562 阅读 · 0 评论 -
HDU - 5618 Jam's problem again
Problem DescriptionJam like to solve the problem which on the 3D-axis,given N(1≤N≤100000) points (x,y,z)(1≤x,y,z≤100000)If two point such as (xi,yi,zi) and (xj,yj,zj) xi≥xj yi≥yj zi≥zj, the bigger o...原创 2019-11-07 13:39:17 · 130 阅读 · 0 评论 -
[POI2007]立方体大作战tet
Description 一个叫做立方体大作战的游戏风靡整个Byteotia。这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置。这些元素拥有n个不同的编号,每个编号正好有两个元素。玩家每次可以交换两个相邻的元素。如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除,所有在他们上面的元素都会掉落下来并且可以导致连锁反应。玩家的...原创 2019-10-28 16:50:00 · 189 阅读 · 0 评论 -
poj 2155 - Matrix
DescriptionGiven an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. Initially we have A[i, j] = 0 (1 <= i, j <= N).We can change the m...原创 2019-10-19 11:19:02 · 168 阅读 · 0 评论 -
[USACO16FEB]负载平衡Load Balancing_Silver
题目链接:[USACO16FEB]负载平衡Load Balancing_Silver题目大意:给你一个矩阵,里面有些点,让你横向切一刀,纵向切一刀,使得得到的四个区域内的最大的点数最少。这道题目数据比较水,点的数量是1e3,于是我们可以用前缀和暴力枚举。但是太没技术含量了,于是我们采用了一种 nlogn * logn 的做法。我们把点离散化之后,枚举x坐标,然后用两个线段树或者树状数组维...原创 2019-10-13 10:44:00 · 439 阅读 · 1 评论 -
[SDOI2009]HH的项链
题目描述HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。输入格式第一行:一个整数N,表示项链的长度。...原创 2019-08-21 09:12:57 · 161 阅读 · 0 评论 -
2019徐州网络赛 - query
题目链接:query题目大意:就是有m次询问,每次问一个区间当中满足 gcd(i,j) = min(i,j) 的有多少对。当时比赛的时候,一直给我感觉就是莫队,但是一直没有维护出来。其实满足这个条件,就是相当于 i , j 有一个倍数关系。而且又是一个全排列,所以满足这个关系的并不多,最多 n log(n) 个,于是我们就可以把所有这样的关系都预处理出来。我们对询问按照 r 排序,然后我...原创 2019-09-10 13:05:11 · 206 阅读 · 0 评论 -
HDU - 5862 Counting Intersections
Counting IntersectionsTime Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1915 Accepted Submission(s): 601Problem DescriptionGiven some segm...原创 2019-09-23 12:28:59 · 226 阅读 · 0 评论