Day10模拟赛复盘

· · 个人记录

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:

首先,先手一定能吃下N/2+1个蛋糕 , 后手只能吃下 N/2-1个蛋糕。因为先手可以从序列中间合并,并且合并的蛋糕一定不让后手吃到。那么前缀加后缀就是后手吃蛋糕的选择。所以后手吃蛋糕肯定贪心找最大的一段前缀 + 后缀。

代码仍在施工~

T5:

找到距离i最近的"bessie" 串,处理出距离i最近的“b”开头的位置。

T6:

堆优化DP。 我们把G看成是+1操作,把H看成是-1操作,做前缀和sum[i]可以想到一个转移,把第二维看成堆丢进堆优化即可,因为这个部分的贡献是1。