「CodePlus 2017 11 月赛」Yazid 的新生舞会
给定长度为
区间
给定长度为
区间
给定两个长度为
我们称一个排列是合法的,当且仅当每一个数都满足这个数比它相邻的数都要大或都要小。
求长度为
给定
给定
给定一个只含 B, L 的字符串序列
定义一次变换为:B 扩展为 BL,L 变成 B,例如 BBLBL -> BLBLBBLB
求经过无数次变换后,
首先感受到这是数据结构题
然后发现你需要用数据结构维护序列,支持
考虑用平衡树维护
注意到 prefix
表示
发现 FHQ-Treap 可以比较自然地维护 因为我只会写无旋 Treap
新增一种操作 unfold(u, x)
,调用时保证 u->l <= x <= u->r
表示将
并且保证分裂后 u->l == u->r == x
我好弱啊
这一题只想到递推 DP
又没有想出正解
到现在还是这么菜
NOIP 2019 如何 500+
首先发现
令
称贝壳的种类为颜色
考虑离线做法,将询问按照
发现只需要维护每个颜色的目前最右出现位置(
每个颜色只在最后出现的地方进行统计,显然可以保证最优(因为离线)
举个例子
1 | 颜色序列为 |
0/1 序列用树状数组维护即可,答案即是 0/1 序列
在线做法,用可持久化线段树即可