奶牛們最近從著名的奶牛玩具制造商Tycow那里,買了一套仿真版彩彈游戲設(shè)備(類乎于真人版CS)。 Bessie把她們玩游戲草坪劃成了N * N(1 <= N<= 100)單位的矩陣,同時(shí)列出了她的 K (1 <= K <= 100,000)個(gè)對(duì)手在草地上的位置。然后她拿著這張表來找你,希望你能幫她計(jì)算一個(gè)數(shù)據(jù)。 在這個(gè)游戲中,奶牛可以用一把彈珠槍向8個(gè)方向中的任意一個(gè)射出子彈。8個(gè)方向分別是:正北,正南,正東,正西,以及夾在這4個(gè)正方向之間的45°角:東北,東南,西北,西南方向。 Bessie望你告訴她,如果她想站在一個(gè)可以射到她的所有對(duì)手的格子上,那么她有多少種選擇。當(dāng)然,貝茜可以跟她的某一個(gè)對(duì)手站在同一個(gè)格子上,并且在這種情況下,你可以認(rèn)為貝茜能射到跟她站在同一格子里的對(duì)手。
* 第1行: 2個(gè)用空格隔開的整數(shù):N和K
* 第2..K+1行: 第i+1行用2個(gè)以空格隔開整數(shù)R_i和C_i,描述了第i頭奶牛的位置,表示她站在第R_i行,第C_i列
* 第1行: 輸出1個(gè)整數(shù),表示如果Bessie可以選擇的格子的數(shù)目。
Gold
題解:亂搞
對(duì)于每一行,每一列,每條對(duì)角線都分別統(tǒng)計(jì)個(gè)數(shù),然后枚舉每個(gè)位置計(jì)算一下就可以了。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 103using namespace std;int a[N][N],l[N],h[N],q[N*10],p[N*10];int n,m;int main(){ freopen("a.in","r",stdin); scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); a[x][y]++; } for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { l[i]+=a[i][j]; h[j]+=a[i][j]; q[i+j]+=a[i][j]; p[i-j+100]+=a[i][j]; } int ans=0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { int cnt=l[i]+h[j]+q[i+j]+p[i-j+100]; cnt-=3*a[i][j]; if (cnt==m) ans++; } PRintf("%d/n",ans);}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注