Codeforces Round #829E 1753E. N Machines

22 篇文章 0 订阅
6 篇文章 0 订阅

题意

按顺序给n个因子 加或乘 比如+a 或×a

可以花费代价p和m 移动两种因子到任意位置

总花费限制b

保障结果在2e9以内

思路

首先如果移动加一定移动到最前 移动乘到最后

想了一下区间dp 但是左右区间互相影响 无法消除

发现这个保证很有用 他确保了乘法因子的总大小

为1的乘法因子不必考虑 >1的乘法因子不超过30个

那么可以dfs枚举哪些乘法因子要移动

枚举时有一个很重要的剪枝 就是如果前面的×a1 枚举了不移动 那么后面的×a2 如果a2<=a1 也是必定不移动的

复杂度会降很多 只能构造2,3,5,7,11这样的乘法因子 就会位数更少 

剩下的加法因子 可以用数据结构区间更新乘上前面的乘法倍数得到移动收益 再求top k收益

后来发现不用那么麻烦 把每个乘法因子前面的加法因子整合成一组 二分第k大的加法移动收益 看是否有k个刚好>=此收益的

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值