arc109A~F

31 篇文章 0 订阅
17 篇文章 0 订阅

A.Hands

  • 贪心

B.log

  • 贪心换最小

C.Large RPS Tournament

  • 倍增DP

D.L

  • 可以在小范围内BFS然后再将终点映射到这个范围内,但是很麻烦。
  • 将题意转化为三角形重心的移动,每一次可以向除了对角以外的七个方向移动,因此只需要在 m a x ( ∣ x ∣ , ∣ y ∣ ) max(|x|,|y|) max(x,y)的基础上加上需要按照对角线调整的+1贡献即可(还要判掉同一个格子内的情况)

E.1D Reversi Builder

  • 发现性质,1…1,11…1000…0,以及1110…10000三种情况讨论。
  • 考虑第三种情况,由于对称性,假设最左边和最右边的段是 [ 1 , l ] , [ r , n ] [1,l],[r,n] [1,l],[r,n],那么当 s − l ≠ r − s s-l\neq r-s sl=rs时,按照左右填的颜色不同总数都是 n n n,再考虑 s − l = r − s s-l=r-s sl=rs的部分加上即可。

F.1D Kingdom Builder

  • 神奇的贪心,首先可以考虑最后形成了若干段,我们用贪心的方法来判定它是否可以形成:
    • 注意到我们只需要考虑每一段的第一个是否可以添加,我们可以从后往前删除。
    • 最后一段一定存在一个字符c,使得在某个时刻其他所有段的两端都不是字符c,那么其他段都能找到一个子串使得两端不为c,删去当前的最后一段之后,剩下的段中如果有c,那么也能直接删完。
    • 删到不能删为止,最后的段一定都不为c,此时超过一段一定不行。
    • 因此相当于是要求:除了第一段以外每一段内都一定要有一个c,除了最后一段以外每一段都一定要有一个子串使得两端不为c。
  • 知道了上面的转化,我们可以直接DP,记录状态 f [ i ] [ 0 / 1 ] [ 0..3 ] [ 0 / 1 ] [ 0 / 1 ] f[i][0/1][0..3][0/1][0/1] f[i][0/1][0..3][0/1][0/1]表示选到 i i i,当前选了没有,选了一个非c/再选了一个c/再选了一个非c,是否确定开始终止段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值