关闭

[DP 分块] UOJ #300. 【CTSC2017】吉夫特

DP的转移是一个子集和的形式 直接做是3183^{18} 按照高9位 低9位分块可以做到29×39=692^9\times 3^9=6^9#include #include #include using namespace std;#define read(x) scanf("%d",&(x))const int N=1<<18; cons...
阅读(133) 评论(0)

[分块] Codeforces 436F Zepto Code Rush 2014 F. Banners

可以转化成区间加,询问ai×ia_i\times i的最大值 这个不好维护,分块,零散的加,直接重构整块,否则在块上打标记 同时我们在块上还要维护当前最大值所在的 ii 和 接下来至少要整块加多少次才能使得最大值变化 每次在块上打标记,当达到临近就重构更新最大值,注意这个最大值随着全局加肯定是单调右移的,那么重构复杂度也是对的#include #include...
阅读(87) 评论(0)

[分块 随机Hash] Romanian IOI 2017 Selection #6 Jolteon

传送门问有多少个区间,出现过的数出现次数都是奇数 给每个数随机一个hash值 然后区间中所有数的xor和 和 所有pre<l≤i≤rpre< l \le i \le r的数的异或和 相同 那么就合法 枚举右端点,新增一个数会对一段造成影响 变成区间异或,区间是否存在一个数,分块维护#include #include #include...
阅读(206) 评论(0)

[分块] BZOJ 4867 [Ynoi2017]舌尖上的由乃

这个题啊 分块 每块O(n√)O(\sqrt n) 把每个块内出现次数做一个前缀和,方便二分的时候O(1)查 然后整块加就打标记,两边零散的,变化不超过10,那么就直接在前缀和数组上修改下 复杂度大概是O(nn√logn+nn√×10)O(n\sqrt n\log n+n\sqrt n\times 10) 还有个问题是前缀和存不下?其实是存的下的,我们只要求从最小值开到最大值就好了,每次整块...
阅读(275) 评论(0)

[分块] BZOJ 4908 [BeiJing2017]开车

我们在车的地方加一 在加油站减一 这样答案就是一个类似绝对值的区间和的东西 这个东西不好搞 分块 对于整块加减 我们在块上再维护一个表示0的指针 对于小块 暴力基数排序重构 复杂度O(nn√)O(n\sqrt n)#include #include #include #include #define pb push_bac...
阅读(297) 评论(0)

[Segment tree Beats! || 分块] Codeforces 793F Tinkoff Challenge - Elimination Round F. Julia the snail

我们用fif_i表示左边界是ii的答案 一条线段[a,b][a,b]对答案的影响是 f1f_1到flf_l中大于等于aa的都跟bb取max 这个可以用线段树科技做 复杂度证明跟区间最值操作的势能分析应该差不多#include #include #include #include using namespace std;inl...
阅读(289) 评论(0)

[莫队 分块] BZOJ 4866 [Ynoi2017]由乃的商场之旅

这个 只会莫队乱搞 自己YY下 复杂度O(n26∗n−−−−−√)O(n\sqrt{26*n}) 成功贴时限过加时间垫底#include #include #include #include using namespace std; typedef long long ll;inline char nc(){ static...
阅读(444) 评论(0)

[分块 莫比乌斯反演] BZOJ 4815 [Cqoi2017]小Q的表格

那个神奇的关系式 其实是辗转相减的形式 稍微发现下就能知道 这其实是个一维的东西 fa,b=abgcd2(a,b)∗fgcd(a,b),gcd(a,b)f_{a,b}={ab\over gcd^2(a,b)}*f_{gcd(a,b),gcd(a,b)} 然后推一推就知道 ans=∑ni=1fi,i∗g(⌊ni⌋)ans=\sum_{i=1}^n f_{i,i}*g(\lfloor {n\ov...
阅读(263) 评论(0)

[阈值] SPOJ RECTANGL - Rectangles

详见 一类算法复合的方法大概就是把坐标都离散了 按照某x坐标上的点数分类 如果矩形的某边是大类 只有O(n√)O(\sqrt n) 直接枚举所有点按 y hash就行了 否则所有小类 把所有能构成的线段放进hash表 只有O(nn√)O(n\sqrt n)再一次体验了unordered_map的感人速度#include #include #include<al...
阅读(102) 评论(0)

[树状数组套权值线段树 || 分块] BZOJ 2120 数颜色 & BZOJ 2453 维护队列

这个么 直接询问 [l,r][l,r]中 pre<lpre<l 的数就好了#include #include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==...
阅读(90) 评论(0)

[分块] BZOJ 2724 [Violet 6]蒲公英

先填个坑 有时间再去看CLJ的题解 CLJ题解里有这样的一个定理 令mode(S)mode(S)为可重集合SS的众数 mode(A⋃B)∈mode(A)⋃B mode(A \bigcup B) \in mode(A) \bigcup B 证明 如果t∉mode(A)⋃Bt \notin mode(A) \bigcup B 那么tt在 mode(A⋃B) mode(A \bigcu...
阅读(81) 评论(0)

[分块] BZOJ 4765 普通计算姬

这就是道打暴力题 不过我偷懒写的复杂度较高 考虑把sumisum_i分成m块 然后我们预处理出每个点对每块的贡献 就可以O(m)O(m)处理修改操作 然后询问 如果我们用树状数组维护子树和 我们可以做到 O(m+nmlogn)O(m+{n\over m} \log n) 我们取 m=nlogn−−−−−√m=\sqrt{n \log n} 复杂度就是 O(nnlogn−−−−−√)O(n\...
阅读(508) 评论(0)

[分块 阈值 离线] BZOJ 3351 [ioi2009]Regions

这个题啊 自己刚了三小时树分块 没什么卵用 我就说 怎么会有题出树分块那么的话 我们对询问 (a,b)(a,b) 按照 b 这种颜色在树上的出现次数分类 阈值设为n√\sqrt n如果b出现次数 n√\sqrt n 那么这种b最多只有 n√\sq...
阅读(182) 评论(0)

[分块 块的分裂 || 替罪羊树套线段树] BZOJ 3065 带插入区间K小值

省选时收了分块大师的教导 于是用分块过了这题 当时竟然没有发上来 具体快忘完了 只是记得分裂什么的 #include #include #include #include using namespace std; typedef pair abcd; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; ...
阅读(212) 评论(0)

[分块] BZOJ 2122 工作评估

比较好的一道分块题 重要结论F(i,j,x0)=min( G(i,j), x0+S(i,j)) 详见:http://blog.csdn.net/u011542204/article/details/51504804 #include #include #include #include #include #define dprintf(...) fprintf(stderr,__VA...
阅读(392) 评论(0)

[五维偏序 分块 bitset] HihoCoder #1236 2015北京网络赛 J Scores

题目链接:http://hihocoder.com/problemset/problem/1236?sid=873407 求五维偏序,强制在线 b[i][j]表示第i维前j块的状态 #include #include #include #include #include #define dprintf(...) fprintf(stderr,__VA_ARGS__)...
阅读(317) 评论(0)

[分块 暴力 树] BZOJ 4381 [POI2015]Odwiedziny

大概就是步数小的预处理前缀和 步数大的直接倍增跳 各种细节搞得欲仙欲死 #include #include #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p...
阅读(184) 评论(0)

[LCT || 分块] IOI 2011 Elephants

分块做法 fhq Orz LCT做法 rzz Orz #include #include #include #include #include using namespace std; typedef pair abcd; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; i...
阅读(169) 评论(0)

[分块] BZOJ 4241 历史研究

分块 但是莫队套分块似乎更快? #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll; inline char nc() { static char buf[100000],*p1=buf,*...
阅读(136) 评论(0)

[可持久化字典树 分块] BZOJ 2741 【FOTILE模拟赛】L

先异或取前缀和 最大异或值 可持久化字典树 然后么 区间问题 分块 用f[i][j] 表示 第i块中的数与i-j块的数的最大异或值 然后边角处理下 复杂度一个根号一个log #include #include #include #include using namespace std; typedef long long ll; inline char nc() { ...
阅读(328) 评论(0)
25条 共2页1 2 下一页 尾页
    个人资料
    • 访问:264071次
    • 积分:11943
    • 等级:
    • 排名:第1328名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:50条
    最新评论