[NOI Online 2022 普及组] 王国比赛题解
CyaNgw_DyG · · 题解
先声明一下:比赛开始的一段时间里第二个样例的
但后来官方把这个bug改了。
思路:模拟
先用一个数组
我这里判断的是如果第
反之,第
到了最后如果
见代码:
#include<bits/stdc++.h>
using namespace std;
int rd(){int Q;scanf("%d",&Q);return Q;}//假装快读->压行
int n=rd(),m=rd(),ans,a[1005];
int v(){return rd()==0?-1:1;};//输入1或者0,如果是0的话就返回-1,是1的话就返回1
int main(){
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)//这里一定是先m再是n
a[j]+=v();
return 0;
}
接下来输入正确答案,与上面的处理方式一样,如果
赋值完了过后,如果
总结一下,
代码十分简短,不用上述的
#include<bits/stdc++.h>
using namespace std;
int rd(){int Q;scanf("%d",&Q);return Q;}//假装快读->压行
int n=rd(),m=rd(),ans,a[1005];
int v(){return rd()==0?-1:1;};//输入1或者0,如果是0的话就返回-1,是1的话就返回1
int main(){
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)a[j]+=v();//这里一定是先m再是n
for(int i=1;i<=n;i++)if(v()*a[i]>0)ans++;//积为正数
cout<<ans;
return 0;
}