【NOIP2018 模擬賽day2】棋盤
阿新 • • 發佈:2019-02-07
今天唯一一道會的題,結果超時了。(整個人都炸了)
這道題是直接減的,如果開二維陣列會直接爆炸,編譯直接報錯。
通過我自己在草稿本上推出來的一些東西,打出了50分的程式碼:
然後,在講題之後的AC程式碼(其實我想得差不多)#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> using namespace std; const int MAXN=1e6; int x[MAXN+1]; int y[MAXN+1]; int main() { int m,n; scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) { x[i]=1; y[i]=1; } while(m--) { int a,b; cin>>a>>b; x[a]=0; y[b]=0; int totx=0; for(int i=1; i<=n; i++) if(x[i]) totx++; int toty=0; for(int i=1; i<=n; i++) if(y[i]) toty++; long long sum=toty*totx; printf("%lld\n",sum); } return 0; }
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #pragma G++ optimaze (2) using namespace std; const int MAXN=1e6; long long x[MAXN+5]; long long y[MAXN+5]; int main() { long long m,n; scanf("%lld%lld",&n,&m); long long totx=n; long long toty=n; long long sum=n*n; while(m--) { int a,b; cin>>a>>b; if(!x[a]){ x[a]=1; sum-=toty; totx--; } if(!y[b]){ y[b]=1; sum-=totx; toty--; } printf("%lld\n",sum); } return 0; }