P1789【Mc生存】插火把

来源:互联网 发布:mac os 光盘镜像 编辑:程序博客网 时间:2024/04/29 01:01
题目描述话说有一天linyorson在Mc开了一个超平坦世界,他把这个世界看成一个n*n的方阵,现在他有m个火把和k个萤石,分别放在x1,y1...xm,ym和o1,p1...ok,pk的位置,问在这个方阵中有几个点会生成怪物?(没有光或没放东西的地方会生成怪物)

P.S.火把的照亮范围是:

|暗|暗| 光 |暗|暗|

|暗|光| 光 |光|暗|

|光|光|火把|光|光|

|暗|光| 光 |光|暗|

|暗|暗| 光 |暗|暗|

萤石:

|光|光| 光 |光|光|

|光|光| 光 |光|光|

|光|光|萤石|光|光|

|光|光| 光 |光|光|

|光|光| 光 |光|光|

这么水的题目,我们直接模拟一下就好了,有光的记为1,最后检查下哪些点是0就好了。

话不多说,代码参上:

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=10000;bool a[N][N];int main(){int n,m,k,i,j;int x,y,s=0;cin>>n>>m>>k;for(i=1;i<=m;i++){cin>>x>>y;a[x][y]=1;a[x-1][y]=1;a[x-2][y]=1;a[x+1][y]=1;a[x+2][y]=1;a[x][y-1]=1;a[x][y-2]=1;a[x][y+1]=1;a[x][y+2]=1;a[x-1][y-1]=1;a[x-1][y+1]=1;a[x+1][y-1]=1;a[x+1][y+1]=1;}for(i=1;i<=k;i++){cin>>x>>y;a[x][y]=1;        a[x][y-1]=1;        a[x][y-2]=1;        a[x][y+1]=1;        a[x][y+2]=1;        a[x-1][y]=1;        a[x-2][y]=1;        a[x+1][y]=1;        a[x+2][y]=1;        a[x-1][y+1]=1;        a[x-1][y-1]=1;        a[x-1][y-2]=1;        a[x-1][y+2]=1;        a[x+1][y-1]=1;        a[x+1][y+1]=1;        a[x+1][y+2]=1;        a[x+1][y-2]=1;        a[x-2][y-2]=1;        a[x-2][y-1]=1;        a[x-2][y+1]=1;        a[x-2][y+2]=1;        a[x+2][y+2]=1;        a[x+2][y+1]=1;        a[x+2][y-1]=1;        a[x+2][y-2]=1;    }    for(i=1;i<=n;i++)    for(j=1;j<=n;j++)    if(a[i][j]==0)s++;    cout<<s;return 0;}



0 0