萌新 AC100pts 求问

P5283 [十二省联考 2019] 异或粽子

`1<<31` 会挂的啊
by WhisperingSnowflakes @ 2022-06-14 15:01:02


@[Eternal蒟蒻](/user/398190) `1<<31` 等于 $-2147483648$,右移成 $-1$ 后就死循环了
by WhisperingSnowflakes @ 2022-06-14 15:03:12


之前写状压我写了 `1<<35` 然后出来是零,搞了半天才知道 $1$ 是 int 数,要写 `1ll` 才行
by GI录像机 @ 2022-06-14 15:05:12


@[WhisperingSnowflakes](/user/721464) 改成了 ``` void insert(ll v){ int x=0; for(int i=(1ll<<31);i;i>>=1){ ll a=bool(v&i); if(!trie[x][a]) trie[x][a]=++tot; x=trie[x][a]; ++cnt[x]; } } ``` 为什么还是不输出捏,有傻逼问题轻喷
by Celestial_Intertwine @ 2022-06-14 15:15:38


你的i是int啊
by WhisperingSnowflakes @ 2022-06-14 15:17:43


@[Eternal蒟蒻](/user/398190) 把i改成`ll`应该就行了
by WhisperingSnowflakes @ 2022-06-14 15:19:14


``` void insert(ll v){ int u=0; for(ll i=(1ll<<31);i;--i){ ll z=(v>>i)&1; if(!trie[u][z]) trie[u][z]=++tot; u=trie[u][z]; ++cnt[u]; } } ``` emmm 还是没有
by Celestial_Intertwine @ 2022-06-14 15:19:47


@[WhisperingSnowflakes](/user/721464)
by Celestial_Intertwine @ 2022-06-14 15:20:01


@[Eternal蒟蒻](/user/398190) `ll z=(v>>i)&1;` 你这是把两个代码混一起了吧
by WhisperingSnowflakes @ 2022-06-14 15:22:06


前面的代码我试了一下改后能过样例的
by WhisperingSnowflakes @ 2022-06-14 15:22:31


| 下一页