分块
btc_runes
没什么意思的人!
展开
-
HDU 1166 敌兵布阵(分块写法)
老是鞭尸这道题,我也挺不好意思的,但是没办法,练手还是挺好的 敌兵布阵 分块做法题解: 分块的做法,一定注意,要把块中的数据,和数组中的数据修改了,不然会出问题,然后分块就正常写法写就行了,边角和块 AC代码: #include<cstdio> #include<algorithm> #include<cmath> #include<cstring...原创 2020-01-06 10:32:58 · 163 阅读 · 0 评论 -
等差子数列:rmq+分块思想
题目链接: 等差子数列 题解: 看到这一题,我的想法是利用分块去写,将等差数列分为一块,但是由于等差数列有连续性,故利用分块思想,将解答案分为三步,两边角的,最大等差数列长度,再求中间部分的最大序列长度,中间部分可以利用rmq去求,因为是数列,所以求区间最值用rmq就很方便了 AC代码: #include<cstdio> #include<algorithm> #inc...原创 2020-01-02 14:50:40 · 217 阅读 · 2 评论 -
Poj 3468 区间求和区间更改
分块: 将分块区间更改,原数组更改,累加求和,时间复杂O(sqrt(n)) AC代码: #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #define ll long long using namespace std; const ll maxn=1e5...原创 2019-12-31 17:28:56 · 136 阅读 · 2 评论 -
hud1754
题目链接 分块: O(sqrt(n))时间复杂度过区间寻求最大值 分块题解: 将区间分为sqrt(n) 大小的 ceil(n/sqrt(n))块, 用ma[ ]数组存每一块的最大值,当修改的时候我们把分的块的最大值修改,如果可以修改,查询的时候就先暴力查询边角的最大值,然后在和中间 ...原创 2019-12-31 14:58:43 · 130 阅读 · 0 评论 -
分块入门
分块入门: 题目链接 解法: 将区间1---n分为sqrt(n)块,l[],r[]分别记录每一块区间的左右端点,每次修改我们只修改左右边角的块,中间的块,我们利用懒标去修改,O(sqrt(n))的复杂度 AC代码: #include<bits/stdc++.h> using namespace std; const int maxn=5e5+5; int l[maxn];//第i个...原创 2019-12-31 13:52:52 · 95 阅读 · 0 评论