欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

猫咪的进化

发布时间:2025/3/15 编程问答 100 豆豆
生活随笔 收集整理的这篇文章主要介绍了 猫咪的进化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

对于一只猫咪来说,它是有九条命的。但是并不是所有的猫咪都是这样,只有那些造化很高的猫咪才能死而复生。而且对于这样的猫咪,如果它能够活到第九条命,那么它最终可以变成任何一种它想成为的动物(当然也可以继续做猫咪啦),我们称这样的猫咪为猫神。现在一只获得了进化机会的猫咪,受到了女神snowharmony的考验。它拥有t个单位的时间,在每个单位时间里,它可以选择沉默、叫一声“喵”、或者叫两声“喵喵”。对于每个单位时间,均有一个实数v[i],猫咪叫一声可获得v[i]的进化量,叫两声可以获得(v[i])^2的进化量,然而它在某个单位时间如果叫了两声,下一单位时间必须保持沉默来休息。女神Snowharmony要求它以一定的方式叫,只有它最终获得了最大的进化量,它才能进化为猫神,从而变为它想成为的动物——人族zsw95。请你帮助它计算最大进化量,使他进化为为猫神zsw95。

输入

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

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

输入样例

3
9 2 1

输出样例

82.0000
说明

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

.
.
.
.
.
.
.
程序:

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std;int t; double f[800010][3],v[800010];template <typename _TpRealnumber> inline double readr() {register int flag = 1;register char c = getchar();while ((c > '9' || c < '0') && c != '-') c = getchar();if (c == '-') flag = -1, c = getchar();register _TpRealnumber init = (c & 15);while ((c = getchar()) <= '9' && c >= '0') init = init * 10 + (c & 15);if (c != '.') return init * flag;register _TpRealnumber l = 0.1;while ((c = getchar()) <= '9' && c >= '0') init = init + (c & 15) * l, l *= 0.1;return init * flag; }int main() {scanf("%d",&t);for (int i=1;i<=t;i++)v[i]=readr<double>();//scanf("%lf",&v[i]);memset(f,-0x3f,sizeof(f));f[0][0]=f[0][1]=f[0][1]=0;for (int i=1;i<=t;i++){f[i][0]=max(max(f[i-1][0],f[i-1][1]),f[i-1][2]);f[i][1]=max(f[i-1][0],f[i-1][1])+v[i];f[i][2]=max(f[i-1][0],f[i-1][1])+v[i]*v[i];}double ans;printf("%0.4lf",max(max(f[t][0],f[t][1]),f[t][2]));return 0; }

转载于:https://www.cnblogs.com/YYC-0304/p/11094949.html

总结

以上是生活随笔为你收集整理的猫咪的进化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。