题解 P1789 【【Mc生存】插火把】
这是一道大水题
首先,我们可以先用数组来储存地图(建议用int,我试过bool会RE)
每次读入火把和萤石的坐标
接着把能照亮的地方标记起来
最后用计数器统计会生成怪的地方有钻石的话还怕怪吗
最后,上代码
#include<bits/stdc++.h>
using namespace std;
int a[105][105],n,m,k,x,y,cnt;
int main(){
cin>>n>>m>>k;//读入数据
for(int i=1;i<=m;i++){
cin>>x>>y;
for(int i=x-1;i<=x+1;i++)for(int j=y-1;j<=y+1;j++)a[i][j]=true;//中间3*3的方格被照亮
a[x-2][y]=true;
a[x+2][y]=true;
a[x][y+2]=true;
a[x][y-2]=true;//别忘了四个角
}
for(int i=1;i<=k;i++){
cin>>x>>y;
for(int i=x-2;i<=x+2;i++)for(int j=y-2;j<=y+2;j++)a[i][j]=true;//5*5的方格被照亮
}
for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(a[i][j]==0)cnt++;//统计没光的地方
cout<<cnt;
return 0;//完美结束
}//求求管理员大发慈悲给我通过
先别走 彩蛋来了
MC小提示: 创造模式命令方块的一些指令
tp @p x y z(坐标)(传送)
give @p xxx(物品名称)(给予)
say"xxx"(说话)
...(其他的自己百度搜吧)