挖煤

挖煤(coal)
 
【问题描述】
    众所周知,小C 是挖煤好手。
    今天他带着他的魔法镐子去挖煤,他的镐子一开始有𝑤点魔
力。他的挖煤路线上会依次经过𝑛个地点,每个地点是煤矿或者
补给站,设小 C 当前镐子魔力值为𝑝,第𝑖个地点如果是煤矿,他
可以开采,获得�𝑖 · 𝑝的金钱,但镐子的魔力值减少𝑘%;如果是
补给站,他可以花�𝑖 · 𝑝的金钱令镐子的魔力值增加�%。每个地
点可以进行至多一次操作。
    小C 想知道他的最大收益。

【输入格式】
    第一行4 个整数𝑛, 𝑘, �,𝑤。
    接下来𝑛行,每行两个整数𝑡𝑦𝑝𝑒𝑖 , �𝑖,若𝑡𝑦𝑝𝑒𝑖 = 1,𝑖号地点
为煤矿;若𝑡𝑦𝑝𝑒𝑖 = 2,𝑖号地点为补给站。
 
【输出格式】
    输出一个实数,表示答案,保留2 位小数。
 
【样例输入】
    5 50 50 10     1 10
    1 20
    2 10
    2 20
    1 30
 
【样例输出】
    375.00
 
【数据范围】
    对于30%的数据,𝑛 ≤ 100。
    另有20%的数据,𝑛 ≤ 1000, 𝑘 = 100。
    对于100%的数据,𝑛 ≤ 105,0 ≤ 𝑘, c,𝑤,a_𝑖 ≤ 100,保证答案
不超过10^9。

 

一看这题目,其实我感觉不太像dp因为状态不好搞,有一个是小数的状态是镐子
但是仔细思考一下,可以发现这个状态其实可以和贡献整合在一起,因为我们高兴的发现,所有和镐子状态有关的贡献都与a[i]有关而且都仅仅是与贡献有关,所以就可以高兴的做dp了。
正着dp还是有后效性无法处理,那我们正难则反,考虑倒着做dp
对于一个地方的煤炭,我们可以挖也可以不挖
如果挖的话,那么对于后面的地方所有获得的贡献就是要乘上这一次减少的p在加上贡献
对于维修站也是同理
f[i]表示从i开始走的最大收益

f[i]=max(f[i+1],f[i+1]*(1-k%)+a[i])

没了

巨简单

 

复制代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
double f[1000001];//f[]i¡À¨ª¨º?¡ä¨®i?a¨º?¦Ì?¡Á?¡ä¨®¨º?¨°?
double k,c,w,ans;int n,a[1000001],type[100001];
inline ll read()
{
    char c=getchar();ll a=0,b=1;
    for(;c<'0'||c>'9';c=getchar())if(c=='-')b=-1;
    for(;c>='0'&&c<='9';c=getchar())a=a*10+c-48;
    return a*b;
}
int main()
{
//    freopen("T2.in","r",stdin);
    freopen("coal.in","r",stdin);
    freopen("coal.out","w",stdout);
    n=read();k=(100-read())/100.0;c=(100+read())/100.0;w=read();
    for(int i=1;i<=n;i++)
    {
        type[i]=read();
        a[i]=read();
    }
    f[n+1]=0;
    for(int i=n;i>0;i--)
    {
        if(type[i]==1)
        {
            f[i]=max(f[i+1],f[i+1]*k+a[i]);
        }
        else
        {
            f[i]=max(f[i+1],f[i+1]*c-a[i]);
        }
    }
    printf("%.2lf\n",f[1]*w);
    return 0;
}
复制代码

 

posted @   HL_ZZP  阅读(477)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示