Day 1
T1
构造一个排列,使满足最多的形如 \([l,r]\) 内单调递增/减。
一个简单的线段树优化 DP,设状态 \(f_{i,0/1}\) 即可转移,\(O(n\log n)\)。
T2
支持往集合中加三维带权点,查询集合中没有任何一维与给出点对应维度相等的最大点权。
唐题。
一种暴力的想法是三维数点之类的,不太能过。
考虑维护已有的 \(w\) 最大的点 \(b_0\),如果这个点可以,就直接得出答案,否则利用维护好的 \((x),(x,y),(x,y,z),(y),\dots\) 必须与 \(b_0\) 不同,其他任意的最大权点 \(b_{1,2,\dots,8}\) 找答案。
注意到对于 \((x)\) 必须与 \(b_0\) 不同的点 \(b_1\),还要再维护 \((x)\) 必须与 \(b_0\) 不同、\((y),(z),(y,z)\) 必须与 \(b_1\) 不同的 \(3\) 个最大权点。
类似的算一下可以发现一共要维护 \(1+3\times6+3\times2+1=26\) 个点。
于是复杂度 \(O(26n)\)。
T3
对于序列 \(S,S_i\in\{1,-1\}\),参数 \(k\) ,维护一个大小为 \(k\) 的栈,\(+1\) 加入元素(加入后栈大小 \(\le k\)),\(-1\) 弹出元素(非空时)。若加入失败,贡献 \(+8\);若成功删除,贡献 \(+16\);若结束时栈中剩下 \(x\) 个元素,贡献 \(+3x\)。设总贡献为 \(f_k(S)\)。\(Q\) 次询问求 \(\max\limits_kf_k(S[l,r])\)。
首先算一个 \(8(r-l+1)\) 的贡献,这样失败的删除 \(-8\);最后剩下的元素 \(-5\)。
不妨最初让 \(k=0\),不难发现,只要 \(\Delta>0\) 一定增大 \(k\),且 \(\Delta\) 单调。所以最终 \(k\) 的取值就是第一个 \(\Delta\le0\) 的位置。注意到,此时失败的删除个数等于 \(k=\infty\) 时的个数。
已知失败的删除个数后,可以简单算出最后剩下的元素。
T4
给出操作序列 \(S_i\in\{1,2,3\}\),变量 \(s=0,a,b\),要选出 \(k\) 个操作依次执行,使 \(s\) 最大。
s+=a
a+=b
s*=2
首先,选出的 \(2,3\) 操作必然是一个前缀、后缀。其次是最多选 \(O(\log)\) 个 \(1,2\) 操作。
枚举 \(2,3\) 操作个数,然后再怎么搞一搞,存数的话用 \(a\times 2^b,2\perp a\)。
标签:元素,删除,题解,THUWC2025,个数,贡献,Delta,维护 From: https://www.cnblogs.com/mRXxy0o0/p/18678551