1 条题解
-
0
思路
由于每次输入 和 只改变其上下左右的值,所以每次只要更新其相邻的值即可。
- 当某个位置相邻的奶牛数达到 时,舒适度加一。
- 当某个位置相邻的奶牛数达到 时,舒适度减一。
- 注意:每增加一头奶牛以后,如果该位置相邻正好有三头奶牛,则舒适度也要加一。
AC code
#include<bits/stdc++.h> #define int long long using namespace std; int p[1000][1005],x,y; int xk[4]={0,1,0,-1},yk[4]={1,0,-1,0}; bool k[1005][1005]; int n,a=0; signed main(){ cin>>n; while(n--){ cin>>x>>y; k[x][y]=1; for(int i=0;i<4;i++){ if(x+xk[i]<0||y+yk[i]<0||x+xk[i]>1000||y+yk[i]>1000) continue; p[x+xk[i]][y+yk[i]]++; if(p[x+xk[i]][y+yk[i]]==3&&k[x+xk[i]][y+yk[i]]) a++; if(p[x+xk[i]][y+yk[i]]==4&&k[x+xk[i]][y+yk[i]]) a--; } if(p[x][y]==3) a++; cout<<a<<endl; } return 0; }
- 1
信息
- ID
- 7058
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者