写一发暴力求五维偏序
其实道理也简单,就是对于每个维记录那些点比当前点小,最后每个维and一下就好
bitset优化下
#include#include #include #include #include #include #include using namespace std;int sa[10][31000],Rank[10][31000];bitset<31000>s[10][31000],tt;int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=5;j++) { scanf("%d",&Rank[j][i]); sa[j][Rank[j][i]]=i; } for(int j=1;j<=5;j++) for(int i=2;i<=n;i++) s[j][i]=s[j][i-1],s[j][i][sa[j][i-1]]=1; for(int i=1;i<=n;i++) { tt=s[1][Rank[1][i]]; for(int j=2;j<=5;j++)tt&=s[j][Rank[j][i]]; printf("%d\n",tt.count()); } return 0;}