您的位置:首页 > 其它

【数论】CF#364 div.2 B.Cells Not Under Attack

2016-08-05 16:06 429 查看
题目链接:
http://codeforces.com/contest/701/problem/B
大意:

在棋盘上下棋子,每个棋子占领同排同列的所有格子,统计每一步之后没有被占领的格子数目。

题解:

统计被棋子占领的行数和列数,设为cnx,cny;则占领重复的格子数为cnx*cny;

占领数为 cnt=cnx*n+cny*n-cnx*cny;

代码如下:

#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define MAXN 100005
int x[MAXN];
int y[MAXN];
long long ans;
long long cnt,cnx,cny;
long long  n,m,p,q;

int main() {
//freopen("in.txt","r",stdin);
while(cin>>n>>m) {
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
cnx=0,cny=0;
ans=n*n;
for(int i=1; i<=m; i++) {
cin>>p>>q;
if(!x[p])
cnx++,x[p]=1;
if(!y[q])
cny++,y[q]=1;
cnt=cnx*n+cny*n-cnx*cny;
cout<<ans-cnt<<" ";
}
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数论 ACM CF