烈焰风暴

Problem Description

烈焰风暴是游戏「魔兽争霸Ⅲ」中的一项技能,血魔法师召唤出一道灼热的火墙,给一定范围内的 6 个单位造成伤害,并在一定时间内对这些单位造成持续伤害 (快捷键 "F"),如图所示:

3774

这里只是给大家科普一下,与本题的设定不同。

 

现在,一些小兵排列整齐以一条线的方式,通过传送门进攻你的大本营。

为了简化问题,我们假设烈焰风暴的作用范围是一个半径为 R 的圆(包括圆上的点),可以秒杀作用范围内的数量不限的小兵。所有小兵都在一条直线上,其位置以坐标的形式给出,并且给出烈焰风暴的作用半径以及释放一次技能所需要的魔法值 m,请你求出至少需要多少魔法才能杀死所有小兵。

Input

输入数据有多组(数据组数不超过 200),到 EOF 结束。

对于每组数据:

  • 第 1 行先给出小兵数量 n (1 <= n <= 1000),半径 R (1 <= R <= 20) 和魔法值 m (1 <= m <= 100)。
  • 第 2 行输入 n 个小兵的坐标 x (0 <= x <= 10000)。

输入数据均为整数,一行内的整数两两之间用空格隔开。

Output

在输出的最开始一行先输出 ”Good Luck” (无论几组数据它只在开头输出一次)。

对于每组数据,先输出 ”Case #i: ” (i 从 1 开始计数),表示当前是第几组数据,之后输出至少需要的魔法。

在所有数据都处理完后,输出一行 ”QAQ”。

上述输出均不包含引号。

Example Input
5 2 4
1 2 3 4 5
5 2 4
1 2 4 6 5
Example Output
Good Luck
Case #1: 4
Case #2: 8

QAQ

#include <stdio.h> void main() {     int flag=1,r,n,m,x[1000],i,j,t,sum,pos;     printf("Good Luck\n");     while(scanf("%d %d %d",&n,&r,&m)!=EOF)     {         sum=1;         for(i=0;i<n;i++)         {             scanf("%d",&x[i]);         }         for(i=0;i<n-1;i++)         {             for(j=0;j<n-i-1;j++)             {                 if(x[j]>x[j+1])                 {                     t=x[j];                     x[j]=x[j+1];                     x[j+1]=t;                 }             }         }         pos=x[0];         for(i=1;i<n;i++)         {             if(x[i]-pos>2*r)             {                 sum++;                 pos=x[i];             }         }         printf("Case #%d: %d\n",flag,sum*m);         flag++;     }     printf("QAQ\n"); }

``` #include<bits/stdc++.h> using namespace std; int main() { int a, b, x, y; cin >> a >> b >> x >> y; // 读取怪物A、B的血量以及两个技能的伤害 int ans = 1e9 + 5; // 初始化最少回合数为一个很大的数 for (int i = 0; i <= 30000; i++) // 尝试不同的烈焰风暴次数 { int ai = max(0, a - y * i); // 怪物A还剩血量 int bi = max(0, b - y * i); // 怪物B还剩血量 int cur = i; // 进行了i次烈焰风暴 // 计算还需要多少次火球术来打败怪物A if (ai % x == 0) cur += ai / x; else cur += ai / x + 1; // 计算还需要多少次火球术来打败怪物B if (bi % x == 0) cur += bi / x; else cur += bi / x + 1; ans = min(ans, cur); // 保存最少技能次数 } cout << ans; // 输出最少回合数 return 0; }```小酷宝玩扫雷C++ 时间限制: 1.0 Sec 内存限制: 128 MB 提交: 0 解决: 238 [提交] [状态] [讨论版] [命题人: 外部导入] 难度 题目描述 小酷宝上课的时候非常喜欢玩扫雷。小酷宝现有一个初始的雷矩阵,他希望你帮他生成一个扫雷矩阵。 扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用*表示);如果当前位置就是雷的话,仍输出一个*。 比如初始的雷矩阵如下: .... ..** *.*. .*.* 对应的数字矩阵为: 0122 13** *4*4 2*3* 输入 第一行两个整数n,m,代表矩阵有n行m列 接下来共n行,每行m个字符 1≤n,m≤1000 输出 输出共n行m列,为扫雷矩阵。 样例输入1 复制 4 4 .... ..** *.*. .*.* 样例输出1 复制 0122 13** *4*4 2*3* 样例输入2 复制 3 4 .... *..* .*.* 样例输出2 复制 1111 *23* 2*3*
最新发布
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值