Examples

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

posted @ 2022-12-12 10:29  xiaoziyao  阅读(98)  评论(0编辑  收藏  举报