zoukankan      html  css  js  c++  java
  • NOIP模拟赛 经营与开发 小奇挖矿

    【题目描述】

    4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词。

    eXplore(探索)

    eXpand(拓张与发展)

    eXploit(经营与开发)

    eXterminate(征服)

    ——维基百科

    今次我们着重考虑exploit部分,并将其模型简化:

    你驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞过n个星球。

    星球笼统的分为2类:资源型和维修型。(p为钻头当前能力值)

    1.资源型:含矿物质量a[i],若选择开采,则得到a[i]*p的金钱,之后钻头损耗k%,即p=p*(1-0.01k)

    2.维修型:维护费用b[i],若选择维修,则支付b[i]*p的金钱,之后钻头修复c%,即p=p*(1+0.01c)

        注:维修后钻头的能力值可以超过初始值(你可以认为是翻修+升级)

    请作为舰长的你仔细抉择以最大化收入。

    【输入格式】

    第一行4个整数n,k,c,w。

    以下n行,每行2个整数type,x。

    type为1则代表其为资源型星球,x为其矿物质含量a[i];

    type为2则代表其为维修型星球,x为其维护费用b[i];

    【输出格式】

    一个实数(保留2位小数),表示最大的收入。

    【样例输入】

    5 50 50 10

    1 10

    1 20

    2 10

    2 20

    1 30

    【样例输出】

    375.00

    【数据范围】

    对于30%的数据 n<=100

    另有20%的数据 n<=1000;k=100

    对于100%的数据 n<=100000; 0<=k,c,w,a[i],b[i]<=100;保证答案不超过10^9

    ans表示i+1~n的最大收益

    如果在i星球挖了矿,则i+1~n的最大收益会下降,即ans*k

    因此比较ans(不挖的状态),ans*k+a[i](挖了的状态)的大小

    最后乘以w即可

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int n,w;
     5 double k,c,ans;
     6 int t[100005],a[100005];
     7 
     8 int main()
     9 {
    10     scanf("%d %lf %lf %d",&n,&k,&c,&w);
    11     k=1-0.01*k;c=1+0.01*c;
    12     for(int i=1;i<=n;i++) scanf("%d %d",&t[i],&a[i]);
    13     for(int i=n;i;i--)
    14         if(t[i]==1)
    15             ans=max(ans,ans*k+a[i]);
    16         else
    17             ans=max(ans,ans*c-a[i]);
    18     printf("%0.2lf",ans*w);
    19     return 0;
    20 }
  • 相关阅读:
    springboot文件上传: 单个文件上传 和 多个文件上传
    Eclipse:很不错的插件-devStyle,将你的eclipse变成idea风格
    springboot项目搭建:结构和入门程序
    POJ 3169 Layout 差分约束系统
    POJ 3723 Conscription 最小生成树
    POJ 3255 Roadblocks 次短路
    UVA 11367 Full Tank? 最短路
    UVA 10269 Adventure of Super Mario 最短路
    UVA 10603 Fill 最短路
    POJ 2431 Expedition 优先队列
  • 原文地址:https://www.cnblogs.com/InWILL/p/5978623.html
Copyright © 2011-2022 走看看