zoukankan      html  css  js  c++  java
  • C

    题意就不说了

    思路:要分析好对什么进行枚举,如果对血量也进行枚举的话,至少要枚举到10^4,加上对攻击力和防御力进行枚举10^2 * 10^2,可能会TLE。

    因为monster的血量是固定的,所以可以通过对攻击力和防御力枚举,求出最少需要的攻击次数,和这个攻击次数下保证的血量,每次比较取max即可。。。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<string>
     6 #include<queue>
     7 #include<algorithm>
     8 #include<map>
     9 #include<iomanip>
    10 #include<climits>
    11 #include<string.h>
    12 #include<numeric>
    13 #include<cmath>
    14 #include<stdlib.h>
    15 #include<vector>
    16 #include<stack>
    17 #include<set>
    18 #define FOR(x, b, e)  for(int x=b;x<=(e);x++)
    19 #define REP(x, n)     for(int x=0;x<(n);x++)
    20 #define INF 1e7
    21 #define MAXN 100010
    22 #define maxn 1000010
    23 #define Mod 1000007
    24 #define N 1010
    25 using namespace std;
    26 typedef long long LL;
    27 
    28 
    29 int main()
    30 {
    31     int mh, ma, md;
    32     int yh, ya, yd;
    33     int h, y, d;
    34     cin >> yh >> ya >> yd;
    35     cin >> mh >> ma >> md;
    36     cin >> h >> y >> d;
    37     int ans = 1 << 29, r, k;
    38     for (int i = ya;i <= 200;++ i) //枚举yang的攻击力
    39         for (int j = yd;j <= 100;++ j)//枚举yang的防御力
    40             {
    41                 if (i <= md) continue;
    42                 r = ceil((double)mh/(i - md));//yang最少的攻击次数
    43                 k = max((ma - j)*r + 1, yh);//yang需要的最少血量
    44                 ans = min(ans, (k-yh)*h + (i-ya)*y + (j-yd)*d);
    45             }
    46     cout << ans << endl;
    47     return 0;
    48 }
  • 相关阅读:
    Arrays类和Timer类(定时调度)
    Centos6.3下Ganglia3.6.0安装配置
    【编程之美挑战赛第一场】树
    ORACLE物化视图具体解释
    让算法会说话之冒泡排序
    VS2008帮助"更新正在进行中"解决办法
    #问题
    sql server 2008 评估期已过期解决办法
    eclipse定义枚举类型错误
    C# 生产者和消费者问题使用Monitor同步
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4387274.html
Copyright © 2011-2022 走看看