2011-05-29 22:35:47Morris
d925. 平均高度
http://zerojudge.tw/ShowProblem?problemid=d925
內容 :
有一長方形, M*N之方格地圖 (完全平坦, 即高度為0)
現在有一大力士往地板槌了T次
若此次槌地板的力量為k, 則此塊地板會凹陷k單位高度, 但周圍地板(上下左右及斜角)會提升k單位高度
問最後此地圖之平均高度
輸入說明
:
測試資料之第一行為三正整數M N T(中間各隔1空格)
其中1<=M、N<=50000且1<=T<=10^5
接下來的T行為正整數Xi Yi Ki(1<=Xi<=M,1<=Yi<=N,1<=Ki<=2^10), 表示(Xi,Yi)為大力士槌的地板位置, 而槌地板的力量為Ki
輸出說明
:
請輸出最後此地圖之平均高度
並將此平均高度四捨五入精準到小數點下兩位
範例輸入 :
3 3 2 2 2 1 2 2 1
範例輸出 :
1.56
提示
:
出處
:
(管理:B88000005)
作法 : 模擬
想要偷工減料,結果大失敗,還是老老實實地做吧
/**********************************************************************************/
/* Problem: d925 "平均高度" from */
/* Language: C */
/* Result: AC (29ms, 298KB) on ZeroJudge */
/* Author: morris1028 at 2011-05-29 21:41:15 */
/**********************************************************************************/
#include<stdio.h>
main() {
int M, N, T, x, y, k, a, b;
long long s;
while(scanf("%d %d %d", &M, &N, &T) == 3) {
s = 0;
while(T--) {
scanf("%d %d %d", &x, &y, &k);
for(a = -1, s -= k; a <= 1; a++)
for(b = -1; b <= 1; b++) {
if(a == 0 && b == 0) continue;
if(x+a >= 1 && x+a <= M && y+b >=1 && y+b <= N)
s += k;
}
}
printf("%.2lf\n", (double)s/(M*N));
}
return 0;
}
上一篇:a065. 提款卡密碼
下一篇:d923. 規律