题解 | #画牌河#
画牌河
https://ac.nowcoder.com/acm/contest/51458/A
//第一次写 (蒟蒻)
思路比较简单 单纯的分两个数组,一个数组接收数据 另一个数组记录安全牌 (刚开始以为复杂度过高没敢提交 g)
#include<bits/stdc++.h>
using namespace std;int b[100000];
int main(){
int m,q;
cin>>m>>q;
int a[m+1];
int ans=0;
for(int i=0;i<q;i++){
int is=0,num=0;
cin>>is;
if(is==1)
{
cin>>num;
a[num]++;
if(num-3>0){ b[num-3]++; if(b[num-3]==1) ans++;}
if(num+3<=m){ b[num+3]++; if(b[num+3]==1) ans++;}
}
if(is==2)
{
cin>>num;
a[num]--;
if(num-3>0){ b[num-3]--; if(b[num-3]==0) ans--; }
if(num+3<=m){ b[num+3]--; if(b[num+3]==0) ans--;}
}
printf("%d\n",ans);
}
return 0;
}