We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
https://atcoder.jp/contests/abc261/tasks/abc261_e
変数Xがあり、初期値はCである。 以下の3種類の操作がN個ある。
これを、
と繰り返し行い、各タイミングでのXの状態を出力せよ。
初期状態で
u
d
を用意して、n回の各操作を行っていく。 これはbit演算はbit毎に独立なので、初期1だったbitと初期0だったbitが各操作でどうなるかが分かれば、xの各bitがどうなるかも分かるということ。 CもAも最大30bitなので、各操作後に全bitがどうなっているか調べることができる。 全体の計算量は 10 ** 5 * 30になる。
10 ** 5 * 30
func solve() { in := getInts() n, c := in[0], in[1] u := (1 << 30) - 1 d := 0 x := c for i := 0; i < n; i++ { in := getInts() t, a := in[0], in[1] if t == 1 { u &= a d &= a } else if t == 2 { u |= a d |= a } else if t == 3 { u ^= a d ^= a } nx := 0 for j := 0; j < 30; j++ { if (x & (1 << j)) != 0 { nx += (u & (1 << j)) } else { nx += (d & (1 << j)) } } x = nx fmt.Println(x) } }
https://atcoder.jp/contests/abc261/submissions/60639965
The text was updated successfully, but these errors were encountered:
No branches or pull requests
https://atcoder.jp/contests/abc261/tasks/abc261_e
問題概要
変数Xがあり、初期値はCである。
以下の3種類の操作がN個ある。
これを、
と繰り返し行い、各タイミングでのXの状態を出力せよ。
解き方
初期状態で
u
d
を用意して、n回の各操作を行っていく。
これはbit演算はbit毎に独立なので、初期1だったbitと初期0だったbitが各操作でどうなるかが分かれば、xの各bitがどうなるかも分かるということ。
CもAも最大30bitなので、各操作後に全bitがどうなっているか調べることができる。
全体の計算量は
10 ** 5 * 30
になる。https://atcoder.jp/contests/abc261/submissions/60639965
The text was updated successfully, but these errors were encountered: