Contingency_Core @ 2024-08-10 18:24:43
struct zds
{
int a[N*32][2],b[N*32];
int all=1;
inline void add(int x)
{
int now=0;
for(int i=30;i>=0;i--)
{
if(a[now][(x>>i)&1])
now=a[now][(x>>i)&1];
else
now=a[now][(x>>i)&1]=all++;
b[now]++;
}
}
inline int ask(int x)
{
int ans=0,now=0;
int i=30;
for(;i>=0;i--)
{
if(a[now][0])
now=a[now][0];
else
return 0;
if((x>>i)&1)
break;
}
i--;
for(;i>=0;i--)
{
b[now]++;
if((x>>i)&1)
ans+=b[a[now][1]];
if(a[now][0])
now=a[now][0];
else
return ans;
}
ans+=b[now];
return ans;
}
void clear()
{
memset(b,0,all*4);
}
} t1={};
为什么把字典树写结构体就CE了(本地能过) 写在外面就AC了。
by Composite_Function @ 2024-08-10 18:27:33
@Contingency_Core 结构体内部不能赋值,需要手动写个初始化程序
by Contingency_Core @ 2024-08-10 18:32:46
@Composite_Function 感谢大佬orz