树状数组是一种单点修改并查询前缀和的数据结构 查询和修改时间复杂度都是log(n) 对于树状数组我们首先需要知道lowbit的概念 lowbit即是x & -x 通俗点是一个数二进制下的从后往前数第一个1所对应的值 具体算法的话就是两个 一个是修改函数如下 void add(int pos, int ...
分类:
编程语言 时间:
2018-06-13 00:56:58
阅读次数:
191
Mishka and Interesting sum time limit per test 3.5 seconds memory limit per test 256 megabytes input standard input output standard output Mishka and ...
分类:
编程语言 时间:
2018-05-26 12:56:35
阅读次数:
212
题意: 输入若干个区间,对于一个区间(a,b),如果存在一个区间(x,y)满足x <= a && y >= b && y - x > b - a,那么就说(x,y)比(a,b)大。 求比每一个区间大的区间有多少。 思路: 树状数组,这题最关键的其实是有重复的区间。 首先把区间按照起点升序排序,如果起 ...
分类:
其他好文 时间:
2018-05-22 12:53:49
阅读次数:
167
题意:给出$n$个广播站,每个广播站有坐标$x_i$,广播半径$r_i$,广播频率$f_i$,求满足$i\lt j,\min(r_i,r_j)\geq|x_i-x_j|,|f_i-f_j|\leq k$的$(i,j)$对数 因为$f_i$很小,$k$更小,所以不妨考虑枚举$f$,那么频率的限制可以转 ...
分类:
其他好文 时间:
2018-05-20 16:42:18
阅读次数:
209
本文章记录所错、易错细节要点。 1.printf("%lld",ans); printf("%d",ans); long long -> %lld d -> %d (poj1456 Supermarket) 2.注意数组下标开始地址。 string:0-strlen-1 (kmp manancher ...
分类:
其他好文 时间:
2018-05-13 12:00:52
阅读次数:
170
int tree[100001];//树状数组,用于取区间[x,y]的数据的和 /* & 特殊运算,t&(-t)的值(十进制),就是t在2进制下,从右往左数第一个1出现的位置。 结合树状数组的特殊性质,这个值有用 */ int lowbit(int t) { return t&(-t); } /* ... ...
分类:
编程语言 时间:
2018-05-09 10:13:58
阅读次数:
209
题意:给定 n 个不三点共线的点,然后问你能组成多少锐角或者直角三角形。 析:可以反过来求,求有多少个钝角三角形,然后再用总的减去,直接求肯定会超时,但是可以枚举每个点,以该点为钝角的那个顶点,然后再枚举另一条边,维护与该边大于90度并小于等于180度的点的数量,这里要用极角排序,这样就可以减小时间 ...
分类:
编程语言 时间:
2018-04-29 01:16:09
阅读次数:
235
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1892 题目大意: 题目大意:有很多方格,每个方格对应的坐标为(I,J),刚开始时每个格子里有1本书,然后让你统计一片区域有多少本书,还可以增加书和减少,移动书。 解题思路: 直接二维数组数组模拟 注意 ...
分类:
编程语言 时间:
2018-04-26 21:45:20
阅读次数:
214
这道题主要就是问你,长度为n的序列,有多少种上升的子序列 当前点的情况种数等于前面所有小于它的点的种数相加 + 1 1就是只有这一个点的时候的序列 那就是要多次查询前面比它小的点的种数的和 那么就是区间求和 用到树状数组就过了 一开始我用的a[k]表示这个点的值等于k时有多少种情况,但是后来考虑到对 ...
分类:
其他好文 时间:
2018-04-26 12:15:52
阅读次数:
123
国际惯例的题面(Bzoj没有,洛谷找的):动态加权逆序对,一眼树套树。256MB内存,5e4范围,不虚不虚。首先把交换改成两个插入和两个删除。考虑插入和删除的贡献,就是统计前面比这个值大的数的数值和,数量和,后面比这个值小的数的数值和,数量和。然后特判一下当前两个值构成逆序对的情况即可(因为这种情况 ...
分类:
其他好文 时间:
2018-04-26 01:17:14
阅读次数:
290