• COGS 1191. [Tyvj Feb11] 猫咪的进化


    ★   输入文件:neko.in   输出文件:neko.out   简单对比
    时间限制:1 s   内存限制:128 MB

    【背景】

    对于一只猫咪来说,它是有九条命的。但是并不是所有的猫咪都是这样,只有那些造化很高的猫咪才能死而复生。而且对于这样的猫咪,如果它能够活到第九条命,那么它最终可以变成任何一种它想成为的动物(当然也可以继续做猫咪啦),我们称这样的猫咪为猫神。现在一只获得了进化机会的猫咪,受到了女神snowharmony的考验。

     

    【题目描述】

    它拥有t个单位的时间,在每个单位时间里,它可以选择沉默、叫一声“喵”、或者叫两声“喵喵”。对于每个单位时间,均有一个实数v[i],猫咪叫一声可获得v[i]的进化量,叫两声可以获得(v[i])^2的进化量,然而它在某个单位时间如果叫了两声,下一单位时间必须保持沉默来休息。
    女神Snowharmony要求它以一定的方式叫,只有它最终获得了最大的进化量,它才能进化为猫神,从而变为它想成为的动物——人族zsw95。
    请你帮助它计算最大进化量,使他进化为为猫神zsw95。

    【输入格式】

    输入:
    第一行一个整数t。
    第二行,t个实数v[i]。

    【输出格式】

    最大的进化量,保留四位小数。

    【样例输入】

    3
    9 2 1
    

    【样例输出】

    82.0000

    【提示】

    各个测试点1s

    1<=t<=800000,-255.00<=v[i]<=255.00
    计算结果不超过maxlongint

    【来源】

    来源:lydliyudong    Tyvj February二月月赛第二场  第1道

    dp

    屠龙宝刀点击就送

    #include <iostream>
    #include <cstdio>
    #define N 800005
    using namespace std;
    int t;
    double res,v,f[N];
    int Main()
    {
        freopen("neko.in","r",stdin);
        freopen("neko.out","w",stdout);
        scanf("%d",&t);
        for(int i=2;i<=t+1;++i) f[i]=-255;
        for(int i=1;i<=t;++i)
        {
            scanf("%lf",&v);
            f[i]=max(f[i],f[i-1]);
            f[i]=max(f[i],f[i-1]+v);
            f[i+1]=max(f[i+1],f[i-1]+v*v);
            res=max(res,f[i]);
        }
        printf("%.4lf",max(res,f[t+1]));
        return 0;
    }
    int sb=Main();
    int main(int argc,char *argv[]){;}
  • 相关阅读:
    java实现httpclient 访问
    推荐博文
    Running With xpi
    1 Spring MVC 原理
    windows服务相关
    求职面试三部曲
    使用mvn插件执行工程单元测试OOM的解决办法
    maven-surefire插件问题
    小问题
    NFA到DFA实例
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7710797.html
Copyright © 2020-2023  润新知