随笔分类 - 数据结构
摘要:思路 并查集+fhqtreap 合并的时候由于是大小不一,所以不能直接合并 所以我们就暴力合并喽 对,就是那种很暴力的把小的往大的身上靠 他们说是启发式合并 抄一波博客 然后不就A了 错误 合并写的没毛病呀,最后看着题解改了改就过了? 明明差不多 代码 cpp // luogu judger ena
阅读全文
摘要:思路 终于做了一个简单题,233 先对区间拍个序 因为他说所有区间互不包含 所以排序之后可以双指针l,r指呀指 容易得到 这样每个值最多插入删除一边 一次操作logn 总复杂度nlogn 代码 cpp include define FOR(i,a,b) for(int i=a;i'9'||s='0'
阅读全文
摘要:思路 一开始写fhq treap 感觉越写越感觉splay好些,就去splay 然后维护序列 注意前驱后继的不存在的情况 但不用插入虚拟节点(那插入岂不太麻烦) 跑的真慢的一批,splay太多了 错误 好多错误 只好对拍 代码 cpp //这个题用treap似乎小题大做了,所以我用splay inc
阅读全文
摘要:思路 超级恶心的pushdown 昏天黑地的调 让我想起了我那前几个月的线段树2 错误 这恶心的一道题终于过了 太多错误,简直说不过来 pushup pushdown 主要就是这俩不太清晰,乱pushdown 其他的写的还没啥毛病(能看出来) 代码 cpp include include inclu
阅读全文
摘要:[TOC] 题目 "luogu" 思路 每次都是插入比之前所有数字大的数,所以之前的答案就不会改变 用fhq treap求出原序列,然后用树状数组依次算出每个值得lis(显然g[i]=g[i j]+1) 然后答案就是前i个得最大值(答案一定是不降的) 这里具体讲一下fhq treap 如果你还是维护
阅读全文
摘要:思路 splay确实有点绕 还是fhq treap牛逼啊,构造完美二叉树(他们说笛卡尔树),就不用rand的,直接计算就好 时间也不慢 代码 cpp] include define FOR(i,a,b) for(int i=a;i'9'||s='0'&&sr) return 0; int mid=(
阅读全文
摘要:[TOC] 题目 "luogu" csdn好像限制了展开博客次数,真的好xx 思路 显然一段区间内的值一定是他的中位数 少一点比多一点好 然后就可以枚举区间了 区间答案为 val[mid] 小于val[mid]的+大于val[mid] val[mid]的所有值 就是size[x] val[mid]
阅读全文
摘要:[TOC] 题目 "luogu" 原来左偏树真的能懒惰下放 那 "这篇博客" 应该要咕咕了 一开始我按照那篇博客想了一下,感觉emm,还是瞄了一眼看到了pushdown 思路 类似线段树2的pushdown,不过是套在了左偏树 其他也就没啥了 ans1直接删除统计 ans2就初始深度 死亡深度(树的
阅读全文
摘要:[TOC] 题目 "luoguP3066" 思路 虽说这个题目有多种做法,但 左偏树算法: 我们发现这个合并的时候并不好合并,因为存的值不是固定的 那我们是不是可以lazy数组呢 因为是两个颗树合并,显然是步阔以的 那就转换一下思路,什么是固定的呢 那就是1到i的路径 我们可以dfs出val[i]表
阅读全文
摘要:[TOC] 题目 "P3939 数颜色" 思路1(待修莫队) 哇,这不是莫队模板题吗 3e5,TLE45分 不行 我有信仰啊 pow(n,0.66666) 75分 思路2(vector+二分) 怕不是数据结构学傻了 开vector直接桶拍二分呀 代码1 cpp include include inc
阅读全文
摘要:关于时间复杂度 对于多维莫队的复杂度~~差不多~~为$O(n^{\frac{2k 1}{k}})$ "摘自zhihu大佬" 奇偶分类优化 cpp return a.l == b.l ? (a.l & 1) ? a.rb.r : a.l include include include include
阅读全文
摘要:题目 "luogu" 暴力60pts部分 显然如果没有出现次数==5的条件 显然是$N_{2}$的求lcs的模板 但是加点条件就完全不同了 思路 这个题短小精悍~~,不想数据结构那么傻逼无脑~~ 我们考虑一下$N_{2}$的缺点 首先我们知道,只有a[i]==b[j]的时候 才会对答案有所贡献(先不
阅读全文
摘要:思路 好久之前的了,忘记什么题目了 可以到我这里做 "luogu" 反正就是hdu数据太水,导致自己造的数据都过不去,而hdu却A了 好像是维护了最大值和次大值,然后出错的几率就小了很多~~也许是自己写错了~~,忘记了 留坑待补 代码
阅读全文
摘要:题目 "luogu" 思路 $$\frac{1}{n} \sum_{1}^{n}( a_{i} A)^{2}$$ $$\frac{1}{n} \sum_{1}^{n}( a_{i}^2 2 A a_{i}+A^2)$$ $$\frac{1}{n} (\sum_{1}^{n} a_{i}^{2} 2
阅读全文
摘要:题目 "CF" "luogu" 思路 ~~好菜呀~~ 数据太大,需要离散化 但是离散化x的时候,需要带上x 1和x+1 因为这也有可能是答案,~~当然你分类讨论也阔以~~ 然后维护一下第一个1出现的位置和第一个0出现的位置 代码
阅读全文
摘要:思路 区间$L$到$R$内加等差数列 已知首项为$K$,公差为$D$ 那么每一位加的数值为 $$K+(i L) D(L include include include include include define ls rt '9'; s = getchar()) if (s == ' ') f =
阅读全文
摘要:思路 让你干啥你就干啥呗 查询第x个妹子就get一下再修改 这里稳一点就维护了三个东西,也许两个也可以 代码 cpp include include include include include include define ls rt '9'; s = getchar()) if (s == '
阅读全文
摘要:思路 脑子还真的是好东西,自己太笨了 容易发现父亲节点和儿子节点的关系 儿子节点大于父亲节点 儿子节点和父亲节点之差为斐波那契数,且斐波那契数为小于儿子节点的最大的一个 1e12中有60左右的斐波那契数,打出表来查找就好了,深度不超过60 代码
阅读全文
摘要:思路 01串的区间求和,区间翻转 lazy%2==0 则不用翻转,lazt%2==1则要翻转 模板题 代码
阅读全文