![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
树状数组
文章平均质量分 52
练习树状数组时刷的恶心题目
SSL_LHNB
Violence Works Wonders
展开
-
来自学长的快乐AK题——Day7 B
B——简单数论+树状数组 Description 有3个人员给小朋友发糖果, 人员1:如果在小朋友k开始发放糖果,则k,k+1,…,n都能获得1个糖果。 人员2:如果在小朋友k开始发放糖果,则k可以获得1个糖果,k+1可以获得2个,往后第i个人获得i个糖果。 人员3:如果在小朋友k开始发放糖果,则k可以获得1^2个糖果,k+1可以获得2^2个糖果,往后第i个人获得i^2个糖果。 给出多组数据, 每组给出人数n,发放次数m,以及m次发放操作的描述,回答m次操作后每个人获得的糖果数(对10^9+7取模)。 输入原创 2021-08-25 15:01:12 · 80 阅读 · 0 评论 -
来自学长的快乐AK题——Day2 C
C——维护第k大的数 Description 给出一个长度为n的序列A描述一个长度为n的全排列a,Ai表示前i-1个数中有多少个数比ai大。 请求出这个全排列a 思路 从后往前遍历A,根据题目中的定义,a的前n-1个数中有An个数比an大,换言之,an就是1~n中第An+1大的数。同理,an-1就是除去已经确定的an后第An-1+1大的数。以此类推,就将问题转化为如何维护一个序列中的第k大数。 算法还是有很多,例如快排(nlogn),归并(nlogn或n),我是采用更好写也更快的桶排(n),卡到了O(n2)原创 2021-08-13 08:03:52 · 154 阅读 · 0 评论 -
洛谷4140 奇数国
题目大意 给定一个初值全为3、长度为100000的序列,并实时改变其中的值,求出给定区间内所有数的乘积product后,问有多少个小于等于product的正整数number满足这个式子: number∗x+product∗y=1number*x+product*y=1number∗x+product∗y=1 其中x,y为任意整数,答案对19961993取模。 知识储备 裴蜀定理 a∗x+b∗y=ma*x+b*y=ma∗x+b∗y=m 有整数解当且仅当m为gcd(a,b)的倍数。 推论: 只有当a,原创 2021-01-22 21:07:32 · 150 阅读 · 0 评论 -
1999年乌拉尔大学编程竞赛 星星
即使知道了是用树状数组解,这道题还是比较的有挑战的。 思路: 开始时,我的思路就掉坑里了。我想的是用类似二维前缀和的思想,记录每个矩形右上角的点的坐标(如(1,9)),将矩形转换成区间(1到9)来解。但显然,这个思路行不通,因为我找不到如何用树状数组来处理这些区间。(但我觉得这个思路会有用,将它记录在这) 进入正题。题目已经说明了,坐标会按照从低到高,从左到右的顺序给出。那么对于任意一颗星星,当它被处理时,其余的星星一定都不会高于它的高度,也就是说,其余的星星永远都满足高度不高于当前星星这一条件。那么原创 2021-01-09 09:25:23 · 100 阅读 · 0 评论 -
POJ3321 苹果树
苹果树 题意:对于一棵根是1号节点的树,动态改变其节点的值,求给定节点的子树中所有节点值的和 思路 刚开始,压根看不明白为什么这道题可以用树状数组做(没错,我又开了挂),但后面随着思考的深入,发现了一些端倪:树状数组是用来维护一个区间内的值的,树与区间有什么联系呢?这时我想到一种思想,dfs遍历一棵树,将每个节点的进入顺序和退出顺序记录下来,就可以将树转换成区间操作!!! 图示如下: 这样的话,就把问题转换成树状数组可以秒杀的区间维护了。 将每个节点的进入顺序作为它所对应的区间的左端点,退出顺序作为右端点原创 2021-01-09 17:14:48 · 215 阅读 · 0 评论