think; 1題目一開始自己做的時候是用二維數(shù)組標(biāo)記出現(xiàn)過的點,然后再用一個二維數(shù)組重新開始遍歷,中間不斷更新最大值和最大值的坐標(biāo),然后提交后超時,今天晚上終于看了題解,發(fā)現(xiàn)學(xué)哥是用結(jié)構(gòu)體數(shù)組記錄出現(xiàn)過的點,再用一個暴力的3重for循環(huán)求解,提交后AC,感覺自己還是做題少了,多做題目,開闊思路,并且一定要有題后反思,反思一下自己的收獲和不足之處,嚴(yán)厲糾正自己的錯誤,努力使自己變得更加優(yōu)秀,加油
C~K祝你元宵節(jié)快樂! Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic
PRoblem Description C~K 是個長得比較帥的吃貨,現(xiàn)在在某一個平面直角坐標(biāo)系中有 n 個湯圓(每個湯圓都在格點上),C~K 有一個正方形的框,現(xiàn)在他站在一個格點上,手持正方形框來框住一部分區(qū)域,他可以吃到正方形框內(nèi)的湯圓(在正方形上的也計算在內(nèi),且正方形的邊長與 x 軸,y 軸平行),C~K 比較忙,現(xiàn)在請你幫他計算一下站在哪個位置可以吃到最多的湯圓。
Input 第一行輸入一個組數(shù) T (1 <= T <= 20)。 對于每組數(shù)據(jù): 每一行輸入一個整數(shù) n (1 <= n <= 100),代表湯圓的數(shù)量。 接下來 n 行每行輸入兩個整數(shù) x, y (1 <= x, y <= 100),代表湯圓的坐標(biāo)。 接下來的一行輸入一個整數(shù) h (1 <= h <= 100),代表 C~K 的正方形框的邊長。
Output 對于每組輸入,先輸出 “Case x:”(不包括引號)代表第幾組。 接下來一行輸出三個數(shù) X,Y,K,分別代表 C~K 可以吃到最多湯圓的坐標(biāo)及湯圓的數(shù)量。 (如果有多個滿足條件的格點,輸出 x 坐標(biāo)最小的哪一個,如果多個格點 x 坐標(biāo)相同,則輸出 y 坐標(biāo)最小的那一個)
Example Input 1 2 1 1 2 2 1
Example Output Case 1: 1 1 2
Hint
Author
「2017年寒假集訓(xùn) 階段測試賽2 - 元宵節(jié)專場」C~K
#include <stdio.h>#include <string.h>struct node{ int x; int y;}a[104];int main(){ int T, n, h, i, j, k, u, v, sum, ans; scanf("%d", &T); for(k = 1; k <= T; k++) { scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%d %d", &a[i].x, &a[i].y); } scanf("%d", &h); sum = 0;///初始化 u = v = 0; for(i = 1; i < 104; i++) { for(j = 1;j < 104; j++) { ans = 0;///注意初始化位置 for(int z = 0; z < n; z++) { if(a[z].x >= i-h && a[z].x <= i+h && a[z].y >= j-h && a[z].y <= j+h) ans++; } if(sum < ans) { u = i, v = j, sum = ans; } } } printf("Case %d:/n", k); printf("%d %d %d/n", u, v, sum); } return 0;}/***************************************************User name: Result: AcceptedTake time: 36msTake Memory: 108KBSubmit time: 2017-02-16 23:21:44****************************************************/新聞熱點
疑難解答