Codeforces Round #117 (Div. 2)

Codeforces Round #117 (Div. 2)

代码


A. Battlefield

any trench in meters numerically does not exceed b.

  • 这个条件意味着每次都是在蓄能开始时走向下一条线段,也就是说每条线段相当于花费了\(a+b\)的时间。
  • bfs,用\(d_i\)表示到达线段i需要经过最少的线段条数,到达\(B\)的时候直接计算欧几里得距离。

B. Vasya's Calendar

  • \[ans = \sum_{i=1}^{n-1}{d-a_i}\]

C. Optimal Sum

  • 考虑去掉绝对值符号。
  • 假定最后和为非负数,那么\(k\)次操作将前\(k\)小的负数转化成整数。
  • 将长度为\(len\)的窗口\([l,r]\)逐渐往右移,优先队列维护绝对值大的负数。
  • 弹出\(a[r-len]\)时,判断该位置是否有变号。
  • 加入\(a[r]\)时,如果是负数,需要考虑是否变号,有两种情况:
  1. 操作次数仍有剩余,那么显然直接变号。
  2. 否则,考虑之前变号的负数绝对值最小的那个,是否小于\(|a[r]|\)而进行替换。
  • 若最后和为负数,将\(a_i\)取反后再做一次即可。

D. Common Divisors

  • kmp求出所有循环串的长度。
  • 假设循环串长度为\(L\), 判断\(s[0..L]=t[0..L]\)

E. Wooden Fence

  • \(f(i,j,k)\)表示长度为\(i\),最后一块类型为\(j\),旋转状态为\(k\)的方案数。

转载于:https://www.cnblogs.com/mcginn/p/5926490.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值