zoukankan      html  css  js  c++  java
  • Stupid Tower Defense

    题目链接

    • 题意:
      水平方向上n个1*1的格子,每一个格子内部能够种一个植物,经过一个格子的时间为t。一共三种植物:R植物。经过时每秒收到r点伤害;G植物,经过后每秒受到g点伤害;B植物,经过后经过一个格子的时间加上b
      2<=n<=1500,0<=r, g, b<=60000,1<=t<=3
    • 分析:
      最開始考虑的贪心:先B植物,后G植物,最后B植物。后来才发现是错误的。
      首先明确,R植物对答案的影响和位置无关,而B和G植物越早种越好,所以问题就在于B和G的种法上。


      状态表示要明确,无论G和B的位置怎样。之后的情况仅仅和B与G的数量有关。所以能够DP。DP[i][j]表示如今中了i个B植物,j个G植物的总伤害。能够贪心。实现採用一维DP处理

    LL n, g, b, r, t;
    LL dp[MAXN];
    
    int main()
    {
        int T;
        RI(T);
        FE(kase, 1, T)
        {
            cin >> n >> r >> g >> b >> t;
            LL ans = n * r * t;
            CLR(dp, -1); dp[0] = 0;
            REP(all, n)
            {
                FED(i, n, 0)
                {
                    if (~dp[i])
                    {
                        LL nxt = dp[i] + (i * b + t) * (all - i) * g;
                        if (dp[i + 1] < nxt)
                            dp[i + 1] = nxt;
                        nxt = dp[i] + (i * b + t) * (all - i) * g;
                        if (dp[i] < nxt)
                            dp[i] = nxt;
                    }
                }
                FE(i, 0, n)
                {
                    if (~dp[i])
                    {
                        LL nxt = dp[i] + (n - all - 1) * (t + i * b) * (r + (all + 1 - i) * g);
                        if (ans < nxt)
                            ans = nxt;
                    }
                }
            }
            printf("Case #%d: %I64d
    ", kase, ans);
        }
        return 0;
    }


  • 相关阅读:
    Jquery中addClass方法不起作用的解决方案
    JavaScript 下拉框 左边添加至右边
    电商网站常用放大镜特效
    jQuery 移除事件与模拟事件
    考勤管理系统V1.0.3
    js 严格模式
    service workder
    本地存储之application cache和localstorage
    Node.js内置的文件系统模块(fs)
    Node.js:OS模块
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5109939.html
Copyright © 2011-2022 走看看