树状数组
pigzhouyb
一个来自浙江的可爱的萌萌哒的肥肥胖胖的OIer
展开
-
『树状数组·逆序对』飞fly
Problem\mathrm{Problem}Problemliu_runda决定提高一下知识水平,于是他去请教郭神.郭神随手就给了liu_runda一道神题,liu_runda并不会做,于是把这个题扔到联考里给高二的做.郭神有n条位于第一象限内的线段,给出每条线段与x轴和y轴交点的坐标,显然这样就可以唯一确定每一条线段.n条线段和y轴交点的纵坐标分别为1,2,3,4…n.我们记和y轴交点纵...原创 2019-10-12 16:22:38 · 119 阅读 · 0 评论 -
『树状数组』贪婪大陆
题目描述人类被蚂蚁们逼到了 Greed Island 上的一个海湾。现在,小 FF 的后方是一望无际的大海, 前方是变异了的超 级蚂蚁。 小 FF 还有大好前程,他可不想命丧于此, 于是他派遣手下最后一批改造 SCV 布置地雷以阻挡蚂蚁们的进攻。小 FF 最后一道防线是一条长度为 N 的战壕, 小 FF 拥有无数多种地雷,而 SCV 每次 可以在[ L , R ]区间埋放同一种不同于之前已经埋...原创 2019-05-22 19:01:48 · 160 阅读 · 0 评论 -
『逆序对问题』「POI2012」Letters
Problem给出两个长度相同且由大写英文字母组成的字符串A、B,保证A和B中每种字母出现的次数相同。现在每次可以交换A中相邻两个字符,求最少需要交换多少次可以使得A变成B。题解这是多么奇妙的一道题目啊!!我们先在换一个问题:如果问你一串数字,至少交换多少次才能使结果升序排列。答案是:逆序对的个数。此时我们把B看成升序的数,把对应的数字赋值到A中求逆序对即可。细节问题:在A中有字符...原创 2019-06-12 15:28:58 · 236 阅读 · 0 评论 -
『递推·树状数组』substring
题目给定一个长度为 N 的序列 A1 A2 … An 和 Q 个询问,每次询问为求长度为 W 的子序列(连续)的权值和,定义一个序列的权值为该序列中不同元素的数的个数。其中,0< W < = N <=10^ 6,0<=Q<=10^ 4,0<= A1 A2 … An <=10^ 6。题解我们设f[i]f[i]f[i]表示长度为i的答案。每一次的变化...原创 2019-06-12 15:38:20 · 136 阅读 · 0 评论 -
『树状数组』整除
题目描述题解思维难度好大的题…我们思考如何对于a[i]a[i]a[i]来说,有多少对合法的(a[i],a[j])(j<i)(a[i],a[j])(j<i)(a[i],a[j])(j<i).我们可以预处理出所有a[i]的因数和倍数,并存储来一个数组内;当求解a[i]时,我们就把所有位置小于等于i(不计算大于是为了避免重复计算)的所有a[i]a[i]a[i]...原创 2019-06-02 18:54:56 · 180 阅读 · 0 评论 -
ggg
题目描述作参考代码#include <bits/stdc++.h>#define int long longusing namespace std;inline int read(void){ int s = 0, w = 1; char c = getchar(); while (c < '0' || c > '9') c = getch...原创 2019-06-10 07:59:00 · 2682 阅读 · 0 评论 -
『莫队·树状数组』Mato的文件管理
题解对于区间询问,我们可以想到莫队,而逆序对则需要用树状数组来维护。因此我们便可以动态维护区间的逆序对。例如:删除左边的点,要在删去树状数组中比它小的点。加如左边的点,则加入树状数组中比它小的点。删除右边的点,就删除比它大的点,因为右边的点点往往处于逆序对中的较小者,而左边则属于较大者。然后用莫队和树状数组维护即可。代码如下:#include <bits/stdc++.h...原创 2019-07-09 18:38:16 · 180 阅读 · 0 评论 -
『树状数组』绕圈跑
显然我们可以预处理出每一个人在事件结束后跑步的圈数s_i那么答案可以表示为:∑i=1n−1∑j=i+1n⌊sj−si⌋\sum_{i=1}^{n-1} \sum_{j=i+1}^{n} \lfloor s_j-s_i\rfloori=1∑n−1j=i+1∑n⌊sj−si⌋我们来思考一下⌊s1−s2⌋\lfloor s_1-s_2\rfloor⌊s1−s2⌋和⌊s1⌋−⌊s2⌋\l...原创 2019-07-10 21:41:58 · 109 阅读 · 0 评论