题意
题意需认真读
每次去 行/列 是动态要更新值的
.luogu标为橘题但是我还是思路有些乱
我们可以找到一个式子来求值
$ ( n+1 ) * n/2 - l + ( n - sy ) $和 $ (1 + n ) * n/2 - r + f * ( n - sx )$
至此可以求出此列的值
所以要统计之前删去 行和列数 以及打标记
#include<bits/stdc++.h> #define int long long using namespace std; int n,q; int l;int r; bool x[1000005],y[1000005]; int sx,sy; int s1,s2; signed main() { ios::sync_with_stdio(false); cin>>n>>q; for(int i=1;i<=q;i++) { char flag; int f; cin>>flag>>f; if(flag=='R') { if(x[f])//删过,值为0 cout<<0<<endl; else { cout<<(1+n)*n/2-l+f*(n-sy)<<endl; r+=f; x[f]=1;//删过 sx++;//删的行数++ } } else//和上同理 { if(y[f]) cout<<0<<endl; else { cout<<(1+n)*n/2-r+f*(n-sx)<<endl; l+=f; y[f]=1; sy++; } } } return 0; }