其他分享
首页 > 其他分享> > 2017模拟赛 经营与开发

2017模拟赛 经营与开发

作者:互联网

这个题目和费用提前算不太一样 两者本质上都是消除后效性

这个题不同的就是不知道后面到底哪些要选 而费用提前算是后面的一定都是会选的

所以这个题巧妙地从后往前转移 这样转移前面的一定是后面最优策略 转移方程非常像算期望值

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 100005
double f[maxn];
double n,k,c,w;
int a[maxn],b[maxn];
int main()
{
    int i;
    scanf("%lf%lf%lf%lf",&n,&k,&c,&w);
    for(i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
    for(i=n;i>=1;i--)
    {
        if(a[i]==1) f[i]=max(f[i+1],f[i+1]*(1-k/100)+b[i]);
        if(a[i]==2) f[i]=max(f[i+1],f[i+1]*(1+c/100)-b[i]);
    }
    printf("%.2lf",f[1]*w);
}

标签:lf%,int,max,开发,maxn,2017,include,100,模拟
来源: https://www.cnblogs.com/wzxbeliever/p/16266831.html