神奇的无旋 Treap ── FHQ-Treap
本文将介绍一种平衡树
复杂度我不会证
实现非常简单
本文将介绍一种平衡树
复杂度我不会证
实现非常简单
我好弱啊
这一题只想到递推 DP
又没有想出正解
到现在还是这么菜
NOIP 2019 如何 500+
首先发现
令
称贝壳的种类为颜色
考虑离线做法,将询问按照
发现只需要维护每个颜色的目前最右出现位置(
每个颜色只在最后出现的地方进行统计,显然可以保证最优(因为离线)
举个例子
1 | 颜色序列为 |
0/1 序列用树状数组维护即可,答案即是 0/1 序列
在线做法,用可持久化线段树即可
假设选中区间
显然得选满
所以对于区间
当然是用线段树维护啦
学数据结构果然会变傻
发现可以用单调队列维护最大子段和
然后发现若是区间
然后就是一道 two-pointer 的题了
带修改最大子段和查询
考虑维护一棵线段树,节点
可以非常方便地合并
然后考虑查询区间
(el, er) ,更新 ansq(ls)q(rs)ans一开始觉得
因为若 ans,反证法可证
因为
于是考虑对
通过在递归过程中判断实现
所以线段树维护区间和与区间最大
辣鸡 BZOJ 评测机,笔记本都只要跑 300ms,在你的老爷 CPU 上直接 TLE
这是一道树形 DP
首先是状态设计,由于用户人数相比耗费作为数组维度比较简单,所以这样设计
考虑节点
把子节点的状态看成一种物品,就是分组背包了
外层倒序枚举
1 | per(i, s, 1) |
复杂度不知道怎么证
观察
发现一个绝对值在外,一个绝对值在里
类似的
只要令
就可满足
例如
1 3 12 11 10 9 8 7 6 5 4 2
1 |
|
尽量充分利用状态,降低复杂度,另外一道题
状态设计比较巧妙
跑一个背包
找方案比较麻烦,如果直接记由哪个状态转移来是不行的,因为后续更新会破坏
所以要搞一个类似链表的东西
这是一个贪心+线段树的解法,复杂度是
把要求按
其他题解怎么都是一个一个跳的,复杂度不会挂吗?
线段树部分写得比较神奇