【解题总结】Codeforces Raif Round 1

A Box is Pull

最优策略必然是至多只拐一个弯。

B Belted Rooms

先缩点,然后看能不能连成一个环。

C ABBB

类似括号匹配,A 是左括号,B 是右括号。

D Bouncing Boomerangs

一个简单的构造方法是按列从右向左考虑,利用右边的列满足左边的条件。

我们考虑遇到某个 a i a_i ai 时怎么满足条件。

  • 如果 a i = 0 a_i = 0 ai=0,那么就不在这列放障碍物。
  • 如果 a i = 1 a_i= 1 ai=1,就在 ( i , i ) (i, i) (i,i) 处先放一个障碍物。
  • 如果 a i = 2 a_i=2 ai=2,就从右边拿一个还没使用过的列 j j j,其中 a j = 1 a_j=1 aj=1,把第 j j j 列的障碍物调整到第 i i i 行。
  • 如果 a i = 3 a_i=3 ai=3,就从右边拿一个还没有放满的列 j j j,在第 j j j 列多加一个障碍物 ( i , j ) (i, j) (i,j)

中途找不到能利用的列了就表明合法方案不存在。

E Carrots for Rabbits

题意:给定 n n n 个正整数 a i a_i ai,可以将每个数拆分成若干正整数。问拆分成 k k k 个数时所有数的平方和最小是多少。

方法一

对一个数拆分一定是尽可能平均。然后发现单个数拆分成 k k k 个尽可能相同的数后,数的平方和的减少量,随着 k k k 的增加是递减的。于是用一个堆对这个减少量贪心即可。

方法二

(其实我一开始往这个方面去想了,但没有更深入。)

利用 WQS 二分。

F Fruit Sequences

题意:给定一个 01 串,问每个子串的最长全 0 子串的长度加起来是多少。

最简单的方法就是枚举右端点,对每个左端点维护答案。这需要区间取 max 和区间求和,用 Segment Beats 很容易实现。

G

待补。

H

待补。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值