agc049A~D

A.Erasing Vertices

  • 想到了单独考虑一个点的贡献,可惜算的方法有问题,最后没有搞出来
  • 对于一个点,考虑能够到达它的点的个数是 c n t cnt cnt,那么这个点被删去的概率为 1 c n t + 1 \frac{1}{cnt+1} cnt+11,因为这些点都是等概率的,答案就是 ∑ 1 c n t + 1 \sum \frac{1}{cnt+1} cnt+11

B.Flip Digits

  • 操作等价于将一个1向左边移动,如果左边是1则相消。
  • 直接每一个位置判断一下,如果不同找到右边的第一个1来修改即可

C.Robots

  • 考虑将一个机器人的预计路径当做区间 [ a i − b i , a i ] [a_i-b_i,a_i] [aibi,ai],那么有两种区间,包含或不包含0。对于一个包含0的区间,右端点如果被一个不包含0的区间覆盖,那么这个机器人就可以花费一的代价,将后面一个位置的机器人安排到自己的位置把自己吃掉。
  • 分析一下可以发现,找到从右往左第一个没有被吃掉的机器人(区间包含0),它会把前面的机器人全部吃掉,然后有 b i − a i + 1 b_i-a_i+1 biai+1的贡献,然后后面的机器人都只用花费1的代价。
  • 假设后面有 c n t cnt cnt个不能被不包含0机器人吃掉的机器人,答案就是 m i n i { m a x ( b i − a i + 1 , c n t ) } min_i\{ max(b_i-a_i+1,cnt)\} mini{max(biai+1,cnt)}

D.Convex Sequence

  • 很容易想到差分两次,然后在差分两次的数组上DP。
  • 相当于是枚举长度为 i i i时开头的增量的增量 d d d,对于总和的贡献为 d ∗ ( i + 1 ) ∗ i / 2 d*(i+1)*i/2 d(i+1)i/2,由于 ( i + 1 ) ∗ i / 2 ≤ m (i+1)*i/2\le m (i+1)i/2m的有 O ( m ) O(\sqrt m) O(m )个,因此暴力完全背包转移是 O ( m m ) O(m\sqrt m) O(mm )的。
  • 再考虑可能有的时候增量时候负的,因此我们可以把这个凸函数分成向左向右两个递增的部分。左边和右边合并的时候要满足 l e n 1 + l e n 2 ≤ n , s 1 + s 2 + k n = m len1+len2\le n,s1+s2+kn=m len1+len2n,s1+s2+kn=m
  • 只需要按照 % n \%n %n分类用一个桶维护右边的个数,枚举左边的 l e n 1 , s 1 len1,s1 len1,s1即可。在 l e n 1 len1 len1增大的时候将桶里的一些元素去除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值