"题目" 一道树状数组的题。 话说题目直接告诉做法是什么鬼? 首先这个题直接暴力是$O(n^2)$的,不能通过(~~评论里说可以?可能数据太水了,建议加强~~) 考虑优化,首先对于答案里的$max$,可以直接通过排序优化掉,即把数据从小到大排序,每次更新答案的时候就直接使用当前的$V$就可以了。 之 ...
分类:
其他好文 时间:
2020-04-25 17:22:48
阅读次数:
59
CDQ分治不但能解决三维偏序问题,还能将某些问题的动态版本变成静态。 比如这题是单点修改,区间查询,这样我们就可以将输入的顺序当作时间轴,之后进行CDQ分治 按x轴排序后,对y进行树状数组加减,这道题就变成了x比他小,并且y也比他小的个数查询 这题还用到了简单的容斥原理,也就是二维前缀和的思想来求取 ...
树状数组是利用数的二进制特征进行检索的树状结构 一般只适合对点进行更新O(logN),对区间进行查询O(logN) 对于源数据a[],c[]表示的时a[n-2^k+1]+a[n-2^k+2]+.....+a[n]的和,其中k为n在二进制下末尾0的个数,c[i]的覆盖范围长度时lowbit(i) 即i ...
分类:
编程语言 时间:
2020-04-19 17:39:55
阅读次数:
69
https://loj.ac/problem/2074 我看到这个题的第一反应是做单调栈: $p[i] =h[j]+\sqrt{|i j|} h[i]$ 就$sqrt$这函数吧,也是单调的,性质应该和直线差不多,所以单调队列维护交点单调的若干条曲线。 求交点可以用二分求,时间复杂度是$O(n~log ...
分类:
Web程序 时间:
2020-04-18 22:33:57
阅读次数:
80
1.树状数组:题目:UVA1428 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<string> 5 #include<cstring> 6 #include<numeric> 7 #include< ...
分类:
其他好文 时间:
2020-04-18 20:11:25
阅读次数:
110
题目链接:https://nanti.jisuanke.com/t/42400 这还是去年去现场赛打的,当时菜的不行,就白给了。最近学了主席树套树状数组,感觉好强的数据结构啊。我们学长说这题挺简单,建字典树dfs序,跑cdq分治就好了(%%%)。本菜鸡发现这题主席树套树状数组也能做。 题意:给你n个 ...
分类:
其他好文 时间:
2020-04-15 16:32:05
阅读次数:
135
题目 "点这里" 看题目。 分析 看到中位数,当然会想到二分答案。 考虑检查答案。自然,我们需要找出中位数小于二分值$k$的区间的个数。考虑构造一个$b$: $$b_i=( 1)^{[a_i\ge k]}$$ 可以发现,这个$b$满足,如果区间$[l,r]$的中位数小于$k$,则$\sum_{i=l ...
分类:
其他好文 时间:
2020-04-12 18:15:00
阅读次数:
79
之前参加 rocketmq 的 meetup,台上有人讲,kafka 不支持同步刷盘,当时没太在意,今天抽空看了下代码: kafka 提供了配置参数来支持同步刷盘,和 rocktmq 的做法不同(4.7 的 rmq 在 sync_disk 模式,统一在 GroupCommitService 中刷盘, ...
分类:
其他好文 时间:
2020-04-12 12:49:37
阅读次数:
211
分块与树状数组均在区间问题上有重要的应用 emm分块效率上不如树状数组,但是思路比较好想 先说分块: 将n个数的序列分为sqrt(n)块,预处理每块数据的信息以加快后续对区间信息的查询 先上一段代码: const int maxn = 5e5 + 50; int sum[maxn],a[maxn], ...
分类:
编程语言 时间:
2020-04-09 19:13:45
阅读次数:
108
题意:给两个长度为n的序列(a1,a2......,an)、(b1,b2......bn)和m个询问以及一个整数k,找出满足k <= S(t) = Σ(i=1 to n) ((t-bi) / ai)向下取整 的最小t。考虑函数的单调性此题可以二分,对于该式子可以证明 ((t-bi) / ai)向下取 ...
分类:
编程语言 时间:
2020-04-09 10:50:50
阅读次数:
70