[题解]CF1580C Train Maintenance

Description

n n n种车,每种车工作 x i x_i xi天就要维护 y i y_i yi,接下来m天,每天有两种操作:加入或者删去,问每天有多少车在维修

Solution

显然的是,每辆车存在一个周期 x i + y i x_i+y_i xi+yi,然后如果一辆车上去的 t   m o d   ( x i + y i ) > x i t\bmod(x_i+y_i)>x_i tmod(xi+yi)>xi,那么这辆车就肯定是处于维修状态的,然后因为为周期性问题所以采取根号分治的做法:
对于 x i + y i > m x_i+y_i> \sqrt m xi+yi>m 的,处于维修的时间不会超过 m \sqrt m m ,对每一段都进行差分修改维护
对于 x i + y i < m x_i+y_i<\sqrt m xi+yi<m 的,维护一个 g i , j g_{i,j} gi,j,表示 t ≡ j ( m o d i ) t\equiv j\pmod i tj(modi)时,有 g i , j g_{i,j} gi,j x i + y i = i x_i+y_i=i xi+yi=i的车处于维修,于是加入删除操作就是对这个数组的+1或者-1
最后对两部分进行求和得到答案

Code

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值