hihocoder 1513 小Hi的烦恼——bitset

时间:2023-03-08 20:17:53

题目:http://hihocoder.com/problemset/problem/1513

自带的题解写得很好……

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<bitset>
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
const int N=3e4+;
int n,rk[][N],dy[][N];
bitset<N> b[][N];
int main()
{
n=rdn();
for(int i=,d;i<=n;i++)
for(int j=;j<;j++)
{
d=rdn();
rk[j][i]=d; dy[j][d]=i;
}
for(int i=;i<=n;i++)b[][i].set();
int u=,v=;
for(int j=;j<;j++,swap(u,v))
{
int lst=dy[j][];
for(int i=;i<=n;i++)
{
int cr=dy[j][i];
b[u][cr]=b[u][lst];
b[u][cr][lst]=;
lst=cr;
}
for(int i=;i<=n;i++)
b[u][i]&=b[v][i], b[v][i].reset();
}
for(int i=;i<=n;i++)printf("%d\n",b[v][i].count());
return ;
}