均摊复杂度&势能分析
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[均摊 线段树] UOJ #228. 基础数据结构练习题
靠信仰做题 其实很好感性的理解复杂度 想象数列是一排山峰高低不平 可以用O(K*n)次开根把他们削平 区间加操作不过是把其中一段整体抬高 只要在这段两边多做常数次就能把他削平 Evan可是用偏导证明的 %%% #include #include #include #include #define mid ((l+r)>>1) using namespace std; type原创 2016-09-25 16:39:31 · 954 阅读 · 0 评论 -
[均摊 平衡树 || 线段树] Codeforces 438D #250 (Div. 1) D. The Child and Sequence
传说中的cf250 china场 题意就是区间取模 区间求和 单点修改 每个数被取模了 肯定会减小一半 一个数最多只要log次就能不动 把相同的数缩成一段 每一段最多被修改O(log n) 次 每一次修改会增加O(1) 段 用平衡树维护 复杂度是 nlog2n 的 对应的势能函数是每一段的log值的和 总势能是(n+m)logn 每次操作log复杂度 能够降1 那么就是两个lo原创 2017-01-19 11:41:12 · 536 阅读 · 0 评论 -
[均摊 平衡树 || 线段树] HDU 5634 Rikka with Phi
用平衡树维护 分析同 [均摊 平衡树 || 线段树] Codeforces 438D #250 (Div. 1) D. The Child and Sequence #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100原创 2017-01-19 11:45:28 · 466 阅读 · 0 评论 -
[线段树 均摊复杂度] BZOJ 2130 魔塔
不会做QAQ 还是转身向Claris的题解吧#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1原创 2017-03-21 23:49:58 · 687 阅读 · 0 评论 -
[线段树 区间最值操作 模板 Segment tree Beats!] BZOJ 4695 最假女选手
鬼畜线段树的大模板题 具体见吉丽的集训队论文 我终于会写线段树了 不对 我好像还不会历史最值#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=b原创 2017-02-07 17:04:09 · 1727 阅读 · 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<cstdio> #include<cstdlib> #include<algorithm> #include<cassert> using namespace std;inl原创 2017-05-28 10:59:49 · 1227 阅读 · 0 评论