ことばがありあまれどなお、 このゆめはつづいてく|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】CF521D Shop

  • CF521D Shop

    • 算法:贪心

题目:

一个长度为 k 的正整数序列 a

n 个操作,每个操作给定正整数 op,i,val,三种类型:

  1. op=1,将 ai 赋值为 val

  2. op=2,将 ai 加上 val

  3. op=3,将 ai 乘以 val

你可以从 n 个操作中选择最多 m 个操作,并按照一定顺序执行。

最大化 i=1kai 的值。

k,n105


题解:

首先乘法运算是简单的,因为求 ,而乘法与顺序、位置无关。所以考虑加法、赋值。

赋值显然是可以看成一种加法

那么考虑转化加法。

显然存在最优方案:先赋值再加法再乘法。

假设不存在赋值操作, 那么每个位置的执行的加法必然是 val 最大的几个。那么按 val 排序,得到的 val 将是有序的。那么每个加法执行位置有序。

令当前加法的前一个加法加 y,后一个加法加上 x,那么当前加法就等同于乘上 xy

那么赋值就可以转化为加法后再转为乘法。注意加法是对赋值有影响,所以不能直接转换。

时间复杂度 O(nlogn)

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15815359.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(33)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示