随笔分类 -  数据结构--splay

摘要:题面 "传送门" Sol 答案就是去掉匹配的括号后的左边右括号个数$/2$取下整和右边左括号个数$/2$取下整 维护: 设$($为$ 1$,$)$为$1$,最大的前缀和就是左边右括号的个数 最小的的后缀和的相反数就是右边左括号的个数 因为要支持取反,翻转等操作 我们要维护左边最大最小,右边最大最小, 阅读全文
posted @ 2018-04-12 15:28 Cyhlnj 阅读(209) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 题目都说了 必然存在一种最优的买卖方案满足: 每次买进操作使用完所有的人民币; 每次卖出操作卖出所有的金券。 设$f[i]$表示第$i$天可以有的最大钱数 枚举$jb_iY_k+a_iX_k$$ 假设$k\frac{Y_j Y_k}{X_j X_k}$$ 设$K_i=\fr 阅读全文
posted @ 2018-04-04 14:16 Cyhlnj 阅读(225) 评论(0) 推荐(1)
摘要:题面 题目描述 为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂。它遵循一个简单的排序规则,第一次操作找到摄低的物品的位置P1,并把左起第一个至P1间的物品反序;第二次找到第二低的物品的位置P2,并把左起第二个至P2间的物品反序...最终所有的物品都会被排好序。 你的任务便是编 阅读全文
posted @ 2018-01-11 22:13 Cyhlnj 阅读(179) 评论(0) 推荐(1)
摘要:这道题显然平衡树,splay,treap什么的随便切 然而我不想打,决定水过这道题 把空间开3倍,树状数组维护它前面的树的个数,开个id数组记录位置 找一个数排名直接二分加求前缀和,log^2的搞一搞 把一个数放在顶/低 直接丢在当前顶/低的前后就可以了不然开3倍数组干嘛 c常数小堪比log的平衡树 阅读全文
posted @ 2018-01-04 16:43 Cyhlnj 阅读(236) 评论(0) 推荐(0)
摘要:Splay模板题(很难调) # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typed 阅读全文
posted @ 2017-12-29 16:52 Cyhlnj 阅读(172) 评论(0) 推荐(0)
摘要:CDQ套CDQ或者CDQ套树套树 前者快于后者然而我写了后者 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algorithm> # include <string.h> # define IL in 阅读全文
posted @ 2017-12-19 19:37 Cyhlnj 阅读(235) 评论(0) 推荐(0)
摘要:CDQ分治或树套树可以切掉 CDQ框架: 先分 计算左边对右边的贡献 再和 所以这个题可以一维排序,二维CDQ,三维树状数组统计 CDQ代码 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algori 阅读全文
posted @ 2017-12-19 19:34 Cyhlnj 阅读(223) 评论(0) 推荐(0)
摘要:前几天刚刚自学了一下splay,发现思路真简单实现起来好麻烦 先贴一下头文件 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # define ll long long # defi 阅读全文
posted @ 2017-07-11 10:51 Cyhlnj 阅读(231) 评论(0) 推荐(1)