【学习笔记】AGC部分题目02

AGC028

Removing Blocks

High Elements

好仙啊。

我会转化!!问题转化为在原序列剩下的数中取 I S IS IS序列 a a a, b b b,满足 c x + ∣ a ∣ = c y + ∣ b ∣ cx+|a|=cy+|b| cx+a=cy+b 。对于没在 a , b a,b a,b序列中的数,可以通过恰当放置使其不对前缀最大值的集合造成影响。

我会分析性质!!对于原序列的前缀最大值一定会在 a a a, b b b之中。

我会调整!!将 a a a, b b b同时删去一个不是前缀最大值的数, a a a, b b b其中之一只会由前缀最大值组成。

应该会做了吧

Jigsaw

问题转化为,对于一个弱连通图

拆分成若干条起点 ≤ H \le H H,终点 > H >H >H的链,每条边恰好经过一次

考虑合法的条件:

1.1 1.1 1.1 对于任意 ≤ H \le H H的点,入度 ≥ \ge 出度
1.2 1.2 1.2 对于任意 > H >H >H的点,入度 ≤ \le 出度
1.3 1.3 1.3存在一个点的入度 ≠ \ne =出度

证明:考虑构造超级源汇点,得到从超级源点出发的欧拉回路,每次回到超级源点就得到了一条合法路径,这些路径包含了所有边。

AGC007

Shik and Copying String

把每个字符的转移路径画下来发现是若干条折线

在这里插入图片描述
合法的方案应该满足:

1.1 1.1 1.1折线之间两两不相交
1.2 1.2 1.2折线只能向下或向右延伸

显然我们可以按 t t t串从后往前贪心,观察到每次新增一条折线,原来的拐点都会向左下挪一位,并且可能会新增一个第一层的拐点,然后把不合法的拐点弹出。答案是所有拐点的最大层数 + 1 +1 +1

复杂度 O ( n ) O(n) O(n)

Pushing Balls

神仙题。

问题转化为 n n n次操作,每次操作两个相邻点,贡献为两个点的距离,然后把这两个点删掉,问 n n n次操作期望和。

考虑对每次操作的贡献单独计算。注意到每次操作后期望仍然是等差数列,推导如下:

d j [ i ] d_j[i] dj[i]表示还剩 j j j个球时第 i i i个位置和第 i + 1 i+1 i+1个位置距离的期望

显然 d j [ i ] = i 2 ( j + 1 ) d j + 1 [ i + 2 ] + 1 2 ( j + 1 ) ( d j + 1 [ i ] + d j + 1 [ i + 1 ] + d j + 1 [ i + 2 ] ) + 2 ( j + 1 ) − i − 1 2 ( j + 1 ) d j + 1 [ i ] d_j[i]=\frac{i}{2(j+1)}d_{j+1}[i+2]+\frac{1}{2(j+1)}(d_{j+1}[i]+d_{j+1}[{i+1}]+d_{j+1}[{i+2}])+\frac{2(j+1)-i-1}{2(j+1)}d_{j+1}[i] dj[i]=2(j+1)idj+1[i+2]+2(j+1)1(dj+1[i]+dj+1[i+1]+dj+1[i+2])+2(j+1)2(j+1)i1dj+1[i]

那么 d j [ i ] = j + 2 j + 1 d j + 1 [ i ] + 2 i + 3 2 j + 2 × D d_j[i]=\frac{j+2}{j+1}d_{j+1}[i]+\frac{2i+3}{2j+2}\times D dj[i]=j+1j+2dj+1[i]+2j+22i+3×D

对于等差数列任选一个数的期望就是其中位数。复杂度 O ( n ) O(n) O(n)

Construct Sequences

首先把 a i + b i a_i+b_i ai+bi的值定下来,然后从前往后构造即可。

Shik and Game

线性 d p dp dp + 前缀和优化。

Shik and Travel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值