有n個實數,每乙個實數可以選,可以不選,也可以選擇它的平方,但如果選擇了它的平方,就不能選擇下乙個數或下乙個數的平方,求選出來的數的和最大是多少
對於乙隻貓咪來說,它是有九條命的。但是並不是所有的貓咪都是這樣,只有那些造化很高的貓咪才能死而復生。而且對於這樣的貓咪,如果它能夠活到第九條命,那麼它最終可以變成任何一種它想成為的動物(當然也可以繼續做貓咪啦),我們稱這樣的貓咪為貓神。現在乙隻獲得了進化機會的貓咪,受到了女神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
用f[i][0],f[i][1],f[i][2]分別表示這個數字不選,選,選平方,就得出了以下狀態轉移方程:
f [i
][0]
=max
+xf[
i][2
]=ma
x+x∗
xf[i][0]=max\left\f[i-1][0]\\ f[i-1][1]\\ f[i-1][2]\end\right.\\f[i][1]=max \beginf[i-1][0] \\ f[i-1][1]\end +x\\f[i][2]=max \beginf[i-1][0] \\ f[i-1][1]\end +x*x
f[i][0
]=ma
x⎩⎨⎧
(f[
i−1]
[0]f
[i−1
][1]
f[i−
1][2
]f[
i][1
]=ma
x+xf
[i][
2]=m
ax+x
∗x
#include
#include
#include
using
namespace std;
int n;
double x,f[
800005][
5];double
read()
//快讀
while
(ch>=
'0'&&ch<=
'9')
//數字
if(ch!=
'.')
return z*y;
//非小數
ch=getchar()
;while
(ch>=
'0'&&ch<=
'9')
//小數部分
return z*y;
}int
main()
printf
("%.4lf"
,max
(f[n][0
],max(f[n][1
],f[n][2
])))
;//要最優的
}
貓咪的進化
題目描述 對於乙隻貓咪來說,它是有九條命的。但是並不是所有的貓咪都是這樣,只有那些造化很高的貓咪才能死而復生。而且對於這樣的貓咪,如果它能夠活到第九條命,那麼它最終可以變成任何一種它想成為的動物 當然也可以繼續做貓咪啦 我們稱這樣的貓咪為貓神。現在乙隻獲得了進化機會的貓咪,受到了女神snowharm...
newSSLOJ1296 貓咪的進化 dp
n個時刻中每乙個時刻可以不叫,叫一聲或者叫兩聲。如果在第i i個時刻叫一聲會得到aia i 的權值,叫兩聲得到ai2 ai 2 的權值,但是下乙個時刻就不可以叫。求最大權值和。很裸的dpd p,設f i 0 1 2 f i 0 1 2 分別表示這只貓在第i i個時刻不叫 叫一聲 叫兩聲的最大權值和。...
SSLOJ 1296 貓咪的進化
傳送門 在每個單位時間內,有三種選擇,求如何組合能使得獲得的進化量 隨便打打dpdp dp,但畢竟是野雞ojoj oj上的題,以至於那麼小的n nn也要開個快讀 include include include include include include include include inclu...