zoukankan      html  css  js  c++  java
  • 全连

    全连

    题目描述

    还记得若干年前那段互相比较《克罗地亚狂想曲》的分数的日子吗?

    E.Space 喜欢打音游。

    但是他技术不好,总是拿不到全连(Full Combo)。

    现在他面前有一份乐谱,乐谱的其中一段有 nnn 个连续的单键音符。

    相邻两个音符的到来时间均相等,我们可以认为第 iii 个音符会在第 iii 个时刻到来。

    点击一个音符,E.Space 需要一段准备时间来进行移动手指之类的操作。由于音符的位置和周围情况不同,点击每个音符的准备时间也不同。

    在一个音符的准备时间内,E.Space 没法做到去点击其它音符,但是不同音符的准备时间范围可以互相重叠。形式化地,令第 iii 个音符的准备时间为 tit_iti​​ 个单位时间,那么如果 E.Space 选择去点击第 iii 个音符,那么他就没法点击所有到来时刻在 (iti ,i+tii + t_ii+ti​​)中的音符。

    为了获得更高的分数,E.Space 还计算了每个音符的性价比。一个音符的性价比等于点击这个音符得到的分数除以 E.Space 点击它所需要的准备时间。

    E.Space 就不指望全连了,他只是想让你帮他计算一下他最多可以得到多少分数。

    输入格式

    从文件 fc.in 中读入数据。
    第一行一个正整数 n 。
    第二行 n 个正整数,第i 个正整数表示 ti​​ 。
    第三行 n 个正整数,第i 个正整数表示第 iii 个音符的性价比 aia_iai​​ 。

    输出格式

    输出到文件 fc.out 中。
    一行一个正整数,表示 E.Space 可能达到的最高分数。

    样例

    样例 1 输入

    5
    2 3 2 1 2
    3 1 2 9 4

    样例 1 输出

    18

    样例 1 解释

    E.Space 可以选择点击第 1,3,51,3,51,3,5 个音符,分数为 2×3+2×2+2×4=18 。

    数据范围与提示

    保证 ti≤nt_i le nti​​n ,ai≤109a_i le 10^9ai​​109​​

    测试点编号n≤n len
    1 5
    2 10
    3 15
    4 20
    5 1000
    6 2000
    7 5000
    8 10000
    9 30000
    10 50000
    11 100000
    12 200000
    13 500000
    14 800000
    15 1000000
    16 1000000
    17 100000
    18 100000
    19 1000000
    20 1000000

    solution
    dp
    令f[i]表示前i个音符,第i个音符必点的最大收益。
    那么f[i]=f[j]+a[i]*t[i] (i-t[i]>=j&&j+t[j]<=i)
    有一个比较裸的想法是第1个限制主席树,对于每一个1~j维护一稞线段树,维护合法位置,最大值。
    可惜MLE。
    考虑一个j如果在i时能贡献,以后也能。
    那么我们可以在一个j能贡献时在把它加入。
    用一个vector存某个点应该在哪里加入,剩下的树状数组维护。
     
     
     
  • 相关阅读:
    本人实操赚钱项目:月入10万的冷门玩法,人人可操作!
    赚钱项目:1万粉丝的公众号,年赚15万!
    AI 时代下的海量业务智能监控实践
    python 转xe7xbdx97xe5x87xbd 为中文
    python xb5xe7xc6xb1xc7xb0xd6xc3xd6xf7xbbxfa
    12.2 新特性:RMAN 自动恢复到 REDO 终点的步骤简化
    深入认识CSS的块级元素
    深入认识CSS的块级元素
    深入认识CSS的块级元素
    SAP WM TO Print Control设置里,Movement Type 的优先级更高
  • 原文地址:https://www.cnblogs.com/liankewei/p/10389599.html
Copyright © 2011-2022 走看看