CF1313
A.Fast Food Restaurant
显然一共有 \(\{1,0,0\},\{0,1,0\},\{0,0,1\},\{1,1,0\},\{1,0,1\},\{0,1,1\},\{1,1,1\}\) 七种分配方式,食物数量多的方案一定可以拆解成多个食物数量小的方案,所以按以上顺序贪心判断即可。注意当食物数量为 \(2\) 时,三个方案的枚举顺序相当于默认 \(a\) 值最大,所以刚开始要 swap
一下
B.Different Rules
万恶的构造。
若 \((x',y')\) 的排名小于等于 \((x,y)\),那么至少满足 \(x'<x,y'<y\) 之中的一个条件。所以可以分别从 \(x'<x\) 和 \(y'<y\) 的点对中考虑
总排名最优时,若点对 \((x',y')\) 满足 \(x'<x,x'+y'> x+y\),那么一定满足 \(y'> y+x-x'\),显然为了使得这样的点对尽量多,我们需要使得 \(y'=x+y-x'\),这样的点对有 \(\min(x-1,n-y-1)\) 个( \(y'<y\) 的点对情况同理。)
-
当这两个最值取到 \(x-1\) 与 \(y-1\),即 \(x+y\leqslant n\) 时,两种情况不会互相影响,此时的最优排名即为 \(1\)
-
反之,先考虑 \(x'<x\) 的点对。此时还有 \(x+y-n\) 个 \(x'\) 无论怎样分配其排名都在 \((x,y)\) 之前,那么将 \(y'\in[1,x+y-n]\) 分配给这若干个 \(x'\) 即可;那么剩余的 \(y-1-(x+y-n)=n-x+1\) 个 \(y'\) 正好可以分配给 \(n-x+1\) 个满足 \(x''+y'>x+y\) 的 \(x''\)。此时一共有 \(n-y-1+n-x-1+1=2n-x-y-1\) 个点对的排名小于等于 \((x,y)\),\((x,y)\) 的排名即为 \(x+y-n+1\)。注意边界 \(n\)
总排名最劣的思路也是这样,结论是 \(x+y-1\leqslant n\) 时排名为 \(x+y-1\),否则为 \(n\)
C.Skyscrapers (hard version)
显然,合法的序列应存在 \(k\) 使得 \(\forall i<k,a_i\leqslant a_{i+1},\forall j>k,a_{j-1}\geqslant a_j\)。那么直接枚举 \(k\) 就行了 神秘前后缀最值用动态开点权值线段树就可以了呀全剧终。考虑 \(a_i\) 在单调不降的序列中的贡献次数,显然它一直能贡献到其左侧第一个小于等于它的数,且其右侧第一个小于 \(a_i\) 的数会覆盖它的贡献。可以用单调栈求出这两个位置后正序倒序两遍求出每个 \(k\) 的序列权值和。
D.Happy New Year
\(k\leqslant 8\) 说明每个人最多被 \(8\) 个魔法区间覆盖,很容易想到状压每个人的覆盖情况
(那为什么本人想到这里就排除状压做法了?)
状压那就状压 DP 吧。虽然人数是 \(10^9\) 级别的,但根据操作区间可以分成至多 \(2n\) 个本质不同的连续段,显然一段内的所有元素状态相同,所以直接按连续段状压 DP。设状态 \(f_{i,j}\) 表示区间 \(i\) 的被覆盖情况为 \(j\) 时 \([1,i]\) 的最大权值,但是当 \(i-1\rightarrow i\) 转移时可能会在 \(i\) 处出现多个操作导致无法 \(O(1)\) 转移,所以状态应是给所有操作排序后将操作编号 \(i\) 设为状态中的 \(i\)。(显然给操作排序前要给区间操作全部差分成 \((l,1),(r+1,-1)\) 形式)
转移的所有形式都是 \(f_{i-1,j'}+(popcount(j)\&1)\times len \rightarrow f_{i,j}\),具体的转移式就不写了
E.Concatenation with intersection
越看越像 Ciallo。
又是前后缀拼接吗,那么肯定要先用 Z 函数求出串 \(a\) 每个后缀和串 \(s\) 的 LCP 与串 \(b\) 每个前缀与串 \(s\) 的最长公共后缀。
现在考虑串 \(a[i...n]\) 的前缀与 \(b[1...j]\) 的拼接。设此时串 \(a\) 的 LCP 长度为 \(len1\),串 \(b\) 的长度为 \(len2\),两者拼接选择的区间有交当且仅当 \(i\in[j-m+2,j]\),此时这组前后缀的贡献次数为 \(len1+len2-m+1\)。当然了,还有 \(len1\geqslant m-len2\) 这条限制,若不满足这条限制这对前后缀无法拼接成完整的串 \(z\)。此时问题就变成了二维数点,用树状数组扫一遍就可以咯
后话
[数据删除]