挖煤(coal)

挖煤(coal)


solution

我好弱,啥也想不到。

想了很久dp,这有后效性啊。

结果倒着做就可以了,因为后面的不会影响前面的。

考虑前面的影响后面:挖煤相当于让后面所有a[I]*(1+k%)

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
int n,a[100005],op[100006];
double k,c,w,f[100005];
int main()
{
    cin>>n>>k>>c>>w;
    for(int i=1;i<=n;i++)scanf("%d%d",&op[i],&a[i]);
    for(int i=n;i>=1;i--){
        if(op[i]==1)f[i]=max(f[i+1],f[i+1]*(1-k/100)+a[i]);
        else f[i]=max(f[i+1],f[i+1]*(1+c/100)-a[i]);
    }
    printf("%.2lf\n",f[1]*w);
    return 0;
}
 

 

posted @ 2018-11-06 15:42  liankewei123456  阅读(453)  评论(0编辑  收藏  举报