专栏文章
题解:B4229 [常州市赛 2024] 棋盘
B4229题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minjgpah
- 此快照首次捕获于
- 2025/12/02 03:25 3 个月前
- 此快照最后确认于
- 2025/12/02 03:25 3 个月前
快复赛了,水篇题解,听说能AK
管理员(大大)行行好让我过吧 我的第一篇题解
这题本质很水 只需要维护行和列的不同区间就行了 最后乘一下 而维护只需要用到前后两个 考虑在线做法
代码
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+7;
int n,q,a,b,hh,ll, h[N],l[N];
signed main()
{
cin>>n>>q;
for(int i=1;i<=n;i++)h[i]=l[i]=(i%2==1)?0:1;
h[0]=h[n+1]=l[0]=l[n+1]=2;
hh=n,ll=n;
while(q--)
{
cin>>a>>b;
if(a==1)
{
if(b==1||b==n)
{
if(h[b-1]!=h[b]&&h[b+1]!=h[b])hh-=1;
else hh+=1;
}
else if(h[b-1]==h[b]&&h[b+1]==h[b])hh+=2;
else if(h[b-1]!=h[b]&&h[b+1]!=h[b])hh-=2;
h[b]=(h[b]+1)%2;
}
else
{
if(b==1||b==n)
{
if(l[b-1]!=l[b]&&l[b+1]!=l[b])ll-=1;
else ll+=1;
}
else if(l[b-1]==l[b]&&l[b+1]==l[b])ll+=2;
else if(l[b-1]!=l[b]&&l[b+1]!=l[b])ll-=2;
l[b]=(l[b]+1)%2;
}
cout<<ll*hh<<endl;
}
}
求过qaq
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...