烈焰風暴 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 10000int 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;}新聞熱點
疑難解答