原题叫小奇挖矿,一道比较简单的dp,但我dp练的太少了,所以没想出来.......
dp记第i个星球到第n个星球的花费,然后倒着递推即可,方程很简单,具体看代码吧
#include<bits/stdc++.h>
using namespace std;
const int maxn=100007;
int n,w,t[maxn],a[maxn];
double k,c,ans;
int main(){
//freopen("explo.in","r",stdin);
//freopen("explo.out","w",stdout);
scanf("%d%lf%lf%d",&n,&k,&c,&w);
k=1-0.01*k;c=1+0.01*c;
for(int i=1;i<=n;i++)scanf("%d%d",&t[i],&a[i]);
for(int i=n;i;i--)
if(t[i]==1)ans=max(ans,ans*k+a[i]);
else ans=max(ans,ans*c-a[i]);
printf("%.2lf\n",ans*w);
}