Day10模拟赛复盘
MarkLikeFlorr · · 个人记录
freopen出现莫名问题导致挂160+分,警钟长鸣!!!
T1:
直接看我写的题解吧
T2:
模拟就行了。
#include<bits/stdc++.h>
#define N 1005
using namespace std;
int n,ans=0;
int fx[4]={0,0,1,-1},fy[4]={1,-1,0,0};
int cnt[N][N];
bool w[N][N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
memset(w,0,sizeof(w));
cin>>n;
for(int i=1;i<=n;i++){
int x,y;
cin>>x>>y;
x++,y++;
w[x][y]=1;
if(cnt[x][y]==3) ans++;
for(int j=0;j<4;j++){
int X=x+fx[j],Y=y+fy[j];
cnt[X][Y]++;
if(w[X][Y] && cnt[X][Y]==3) ans++;
else if(cnt[X][Y]==4 && w[X][Y]) ans--;
}
cout<<ans<<"\n";
}
return 0;
}
T3:
对原数组二阶差分,对某一项+1或-1就相当于对原数组+或- 一个等差数列,所以求原数组二阶差分的绝对值之和就行了。
代码仍在施工~
T4:
首先,先手一定能吃下
代码仍在施工~
T5:
找到距离i最近的"bessie" 串,处理出距离i最近的“b”开头的位置。
T6:
堆优化DP。 我们把G看成是+1操作,把H看成是-1操作,做前缀和sum[i]可以想到一个转移,把第二维看成堆丢进堆优化即可,因为这个部分的贡献是1。