DTOJ 4780. 病毒研究

题意

病毒科学家陈博士正在带领着她的团队在研究病毒,她要研究如何降低病毒的活性。病毒的活性可以用一个整数来表示,但她不知道具体的活性是多少。

她可以执行 m + 1 m+1 m+1 种操作,对于前 m m m 种操作,第 i i i 种操作为花费 v i v_i vi 的代价使得病毒 的活性减少 w i w_i wi;第 m + 1 m+1 m+1 种操作为查看当前病毒所处的状态,不需要花费任何代价。

病毒一共有 n n n 种状态。有 n + 1 n+1 n+1 个递增的数 a 0 , a 1 , a 2 , . . . , a n a_0,a_1,a_2,...,a_n a0,a1,a2,...,an,其中 a 0 = 0 a_0=0 a0=0;若病毒的活性 x x x 满足 a i − 1 < x ≤ a i a_{i-1}<x\le a_i ai1<xai,那么这个病毒就处于状态 i i i。同时,保证病毒的活 性不会大于 a n a_n an

她可以使用每种操作任意多次,但是她不希望病毒完全丧失活性。但是如果在使用了一个操作后,病毒的活性 ≤ 0 \le 0 0 了,那研究就失败了。而病毒的活性太高时也不适合研究,只有病毒处于状态 1 1 1 时才最适合研究。

现在,她只知道病毒的活性是 [ 1 , a n ] [1,a_n] [1,an] 中的一个等概率随机的整数。她想知道,在保证病毒不会完全丧失活性的情况下,她使病毒变为状态 1 1 1 的过程中,花费代价的期望最少是多少。

可以发现答案乘 a n a_n an 一定是个整数,输出答案乘 a n a_n an 的值即可。

如果不能保证病毒不会完全丧失活性,输出 − 1 -1 1

子任务编号 a n ≤ a_n \le an分值
1 1 1 10 10 10 17 17 17
2 2 2 50 50 50 33 33 33
3 3 3 200 200 200 12 12 12
4 4 4 2000 2000 2000 38 38 38

对于所有数据,满足 1 ≤ a 1 < a 2 < . . . < a n ≤ 2000 , 1 ≤ T ≤ 10 , 1 ≤ v i ≤ 1 0 6 1\le a_1 < a_2 < ... < a_n \le 2000 , 1\le T \le 10 , 1 \le v_i \le 10^6 1a1<a2<...<an2000,1T10,1vi106

题解

首先要对题意有正确的把握:由于只能知道病毒所处的状态而不是具体的活性,所以对于同一状态的所有病毒第一步所采取的状态是相同的,而这一步之后它们会被向左平移并可能被分割为一些不同状态的连续区间。于是考虑区间DP: f [ l ] [ r ] f[l][r] f[l][r]为把 [ l , r ] [l,r] [l,r]解决的最小代价和,枚举第一步即可转移,效率 O ( n 2 m ) O(n^2m) O(n2m)

由于转移时不可避免枚举,不太可优化,考虑优化状态。注意到转移到的区间似乎都是每个状态的前缀或后缀,如果只有这些状态就是 O ( n ) O(n) O(n)的了。但可能原来的区间平移后不被分割就gg了,于是考虑强制让它经过若干次平移后被分割,那就只能枚举平移的长度,对长度做一个完全背包即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值