
分块算法
Dave_L
这个作者很懒,什么都没留下…
展开
-
数据结构专题-分块算法 区间加法 区间内x的前驱
给出一个长为n的数列,以及n个操作,操作0区间加法,操作1询问区间内小于某个值x的前驱(比其小的最大元素)。 Code: #include <bits/stdc++.h> using namespace std; const int AX = 1e6+66; set<int>s[AX]; int a[AX]; int b[AX]; int add[AX]; int le...原创 2018-05-16 22:26:44 · 400 阅读 · 0 评论 -
UESTC 数据结构专题 帆宝RMQ 分块+vector+结构体排序二分
思路:这题可以说是写的吐血了,只因为没有考虑到没有1操作,直接2操作询问的情况,分块之后就要rubuild ,不然直接二分查找vector内数据不是有序的就会混乱!! Code: #include <bits/stdc++.h> #define LL long long #define INF 0x3f3f3f3f using namespace std; const int ...原创 2018-05-23 20:27:19 · 342 阅读 · 0 评论 -
练习赛6 AB暴力 C组合数学 E莫队 G计算几何 I floyd K线段树+二分
A 题意:每个人有三个值,找出所有满足自己最大的两个值大于所有人最小的两个值的人。 思路:暴力,存所有人最小的值中最大的,和第二小值最大的,分别和每个人最大次大的比较。 Code: #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;algorithm&gt; #define LL long long using n...原创 2018-07-22 17:39:29 · 350 阅读 · 4 评论 -
HDU 多校第四场Problem B. Harvest of Apples 莫队算法
B S(n,m) = S(n,m-1) + C(n,m) S(n,m) = 2 * S(n-1,m) - C (n-1,m) 这个式子可由杨辉三角得出:上面一行的相邻两个元素相加得下面的元素,那么下面元素的和就是上面一行和的2倍减去上一行最后一个元素,因为它对下面一行只贡献了一次。 由上两个式子可得: S(n,m) = S(n,m+1) + C(n,m+1) S(n+1,m) = ...原创 2018-08-02 10:10:53 · 295 阅读 · 0 评论 -
分块算法求区间众数 + 洛谷4168 P4168 [Violet]蒲公英
分块算法求众数的主要思路就是,先预处理出任意整个块之间的众数,然后查询的时候O(1)的到L,R区间内整块的众数,然后再暴力枚举左右多余的数中是否有超过整个块中的众数。 P4168 开氧气才能过。 Code: #include <bits/stdc++.h> #define LL long long using namespace std; map<int,int>mp; c...原创 2018-10-04 22:40:41 · 513 阅读 · 0 评论 -
HDU4638 不带修改莫队算法
HDU4638 题意:n个人,几个人为一组的要求是号连续,每组价值是人数的平方,询问m个区间回答每个区间分几组能达到和最大。 思路:明显是一组人越多越好,那相当于问给定区间能分几组的问题了,离线用莫队算法,把询问存起来。 需要注意的就是当前后两个询问区间没有重叠部分的时候,如果先进行了删除操作,那么就可能导致出错,因为删除了本来不存在的点再添加 和 添加点后再删除得到的结果是不一样的。所以莫队的...原创 2018-11-24 09:06:43 · 249 阅读 · 0 评论