烈焰风暴 简单贪心

烈焰风暴
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
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

blablabla:
….回头看看 这题真水。。。。

#include <stdio.h>
#include <stdlib.h>
#include <bits/stdc++.h>
#define N 10000
int cmp(const void *a,const void *b)
{
    return *(int*)a-*(int *)b;
}
int main()
{
    int count=0;
    int i,j;
    int n,r,m;
    int a[N];
    printf("Good Luck\n");
    while(scanf("%d%d%d",&n,&r,&m)!=EOF)
    {
        int sum=1;
        count++;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        qsort(a,n,sizeof(int),cmp);
        for(i=0;i<n;i++)
        {
            if(a[i]!=-1)
            {
                for(j=i+1;j<n;j++)
                {
                    if(a[i]+2*r>=a[j])
                        a[j]=-1;
                    else
                    {
                        sum++;break;
                    }
                }
            }
        }
        printf("Case #%d: %d\n",count,sum*m);
    }
    printf("QAQ\n");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值