2022-12-12 #10 这被染灰的大地 据说是我的光明
——霾《无重力少女》
第十期了呢。
vp:CF1771,简单场。
53 P4183 [USACO18JAN]Cow at Large P
54 ARC149E Sliding Window Sort
啊啊啊,最近总是不想动脑,一些比较复杂的东西只想摆烂。
嘿嘿,我是摆怪。
重新刻画加数的过程,我们维护一个小根堆,先在堆里 push 前 \(m-1\) 个数,然后重复 \(k\) 次:将序列的第一个数加入堆,将堆顶放入序列的尾端。
若 \(k>n-m+1\),那么在第 \(n-m+1\) 步之后,堆中一定一直是 \([n-m+1,n-1]\),我们可以据此倒推出 \(n-m+1\) 时刻的唯一状态。
如果 \(k<n-m+1\),那么后面没操作过的数可以忽略,所以我们只需考虑 \(k=n-m+1\)。
观察知若 \(b_i<b_{i-1}\),那么 \(b_i\) 一定是加入堆后立即被 pop 的。(因为 \(b_{i-1}\) pop 时堆内其他数均大于它)
忽略掉上述的所有 \(b\) 位置(它们都唯一确定了),其余的 \(b\) 递增,问题变为:对于所有 \(i\),\(b_i\) 位于前 \(i+k-1\) 个位置。
从前往后依次填即可,因此方案数是 \(k^{n-m+1}(k-1)!\)。
55 uoj#515. 【UR #19】前进四
离线,从后往前扫描序列,用线段树维护每个时刻的后缀最小值,每次将 \(i\) 位置每个时间段的权值加入,就是一个区间 chkmin,只带区间 chkmin 的 Segbeats 是 \(O(n\log n)\) 的,顺带记一下 chkmin 次数就好了。
56 P4886 快递员
比较简单,在点分治结构下找这个点即可。
57 CF827F Dirty Arkady's Kitchen
一种策略是在一条边上反复横跳,不妨把一个点拆成奇数和偶数维护,并类似 dijkstra 地更新每一条边。
要 CF 了,等下写吧。
代码很好懂:Submission。
58 HDU6765 Count on a Tree II Striking Back
类似 P4581 [BJOI2014]想法 的技巧,由于随机 \(k\) 个 \([0,1)\) 变量最小值期望 \(\frac{1}{k+1}\),因此每种颜色随机一个 64 位整数作为权值,定义一条链的权值为上面颜色最小权值,那么期望下颜色少的链的权值会更小。我们随机 30 遍,把权值取平均数就好了。
今天本来还有计划来着,后来做了好久 回文匹配,计划就搁置了。
记录一下:ACL1F Center Rearranging,uoj#712. 【北大集训2021】简单数据结构,loj#6509. 「雅礼集训 2018 Day7」C