#include<stdio.h> int a[12]; int main() { int n,i,j; while(scanf("%d",&n)!=EOF) { j=0; while(n) { a[j++]=n%2; n/=2; } for(i=j-1;i>=0;i--) printf("%d",a[i]); p
思路: 看题解的时候可以结合这篇博客 首先我们要搞清楚维护的是啥。 我们对每一个 a [ i ] a[i] a[i]维护一个 m m m位的bitset,表示 a [ i ] a[i] a[i]是否大于 b [ j ] b[j] b[j]。 这样的 b i t s e t bitset bitset最多只有 m m m种,因为 b b b数组就m个数字,这个有单调性。 所以我们可以预处理出这