比赛 202103省实验桐柏一中普及组联赛 评测结果 RRRRRRRRRR
题目名称 知己知彼,百战不殆 最终得分 0
用户昵称 今天作业写了没 运行时间 0.159 s
代码语言 C++ 内存使用 14.13 MiB
提交时间 2021-03-22 20:01:28
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int x,y,m,n,p[1805][1805],mx,a[5],b[5],unad,num;
  4. void add(int x,int y)
  5. {
  6. if(!p[x][y]) unad++;
  7. p[x][y]++;
  8. if(p[x][y]==mx) num++;
  9. if(p[x][y]>mx)
  10. {
  11. mx++;
  12. num=1;
  13. }
  14. }
  15. void scp(int x,int y)
  16. {
  17. memset(a,0,sizeof(a));
  18. memset(b,0,sizeof(b));
  19. for(int i=1;i<=2;i++) if(x>i) a[i]=1;
  20. for(int i=0;i<=1;i++) if(x+i<n) a[3+i]=1;
  21. for(int i=1;i<=2;i++) if(y>i) b[i]=1;
  22. for(int i=0;i<=1;i++) if(y+i<n) b[3+i]=1;
  23. // if(x>1) a[1]=1; -1
  24. // if(x>2) a[2]=1; -2
  25. // if(x<n) a[3]=1; +1
  26. // if(x+1<n) a[4]=1; +2
  27. if(a[1] && b[2]) add(x-1,y-2);//1
  28. if(a[3] && b[2]) add(x+1,y-2);//2
  29. if(a[4] && b[1]) add(x+2,y-1);//3
  30. if(a[4] && b[3]) add(x+2,y+1);//4
  31. if(a[3] && b[4]) add(x+1,y+2);//5
  32. if(a[1] && b[4]) add(x-1,y+2);//6
  33. if(a[2] && b[3]) add(x-2,y+1);//7
  34. if(a[2] && b[1]) add(x-2,y-1);//8
  35. add(x,y);//self
  36. }
  37. int main()
  38. {
  39. freopen("safenum.in","r",stdin);
  40. freopen("safenum.out","r",stdout);
  41. cin>>n>>m;
  42. for(int i=0;i<m;i++)
  43. {
  44. scanf("%d%d",&x,&y);
  45. scp(x,y);
  46. }
  47. cout<<n*n-unad<<endl<<mx<<" "<<num;
  48. }