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位小数),表示最大的收入。

    输入输出样例

    输入样例#1:
    5 50 50 10
    1 10
    1 20
    2 10
    2 20
    1 30
    输出样例#1:
    375.00

    说明

    对于30%的数据 n<=100

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

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

    分析:思路比较巧妙。

    这道题一眼看上去就觉得一定要dp,但是如果设f[i]为1~i的最大收益的话,显然钻头的能力值有后效性,那么怎么办呢?假设f[i]为i~n的最大收益,如果i选了,那么受影响的就是i+1,假设我们预先知道i+1受影响后的值,我们就能推出i的值了,就没有后效性了,怎么操作呢?f[i] = max(f[i + 1],f[i + 1] * p p + a[i]),因为f[i + 1] * p就是i选了后的结果,如果顺推的话我们是先f[i]先乘p的,这样就避免了后效性.

    如果一个dp题i对i以后的所有点都有后效性,那么可以考虑反过来做.

    #include<cstdio>
    #include<algorithm>
    
    using namespace std;
    
    const int maxn = 100010;
    int n, w, t[maxn], a[maxn];
    double k, c, ans;
    int main()
    {
        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
    ", ans*w);
        return 0;
    }
  • 相关阅读:
    JavaScript
    94.Binary Tree Inorder Traversal
    144.Binary Tree Preorder Traversal
    106.Construct Binary Tree from Inorder and Postorder Traversal
    105.Construct Binary Tree from Preorder and Inorder Traversal
    90.Subsets II
    78.Subsets
    83.Merge Sorted Array
    80.Remove Duplicates from Sorted Array II
    79.Word Search
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7545512.html
Copyright © 2011-2022 走看看