6957: bitset 使用
[Creator : ]
Description
给固定长度为 $n=60$ 的集合,该集合的数据只有两种:$0$ 或者 $1$。
开始的时候,集合内数据全部为 $1$。
我们有以下几种操作:
保证每次操作都是合法。
开始的时候,集合内数据全部为 $1$。
我们有以下几种操作:
- 1 x。查询操作,表示输出指定 $x\ (0 \leq x \leq n-1)$ 位的值。
- 2 x y。表示将指定 $x\ (0 \leq x \leq n-1)$ 位的值设置为整数 $y\ (0 \leq y \leq 1)$。
- 3。输出这个集合中 $1$ 的个数。
- 4。输出这个集合中 $0$ 的个数。
- 5 x。输出第 $x$ 位被设置,输出 yes,否则输出 no。
- 6。输出这个集合中是否任意一个位被设置,如果是输出 Yes,否则输出 No。
- 7。输出这个集合中是否任意一个位没有被设置,如果是输出 YES,否则输出 NO。
- 8。输出这个集合中是否所有位都被设置。如果是输出 yEs,否则输出 nO。
- 9。将该集合所有位设置。
- 10 x。将该集合中第 $x$ 位设置。
- 11。将该集合所有位清除。
- 12 x。将该集合中第 $x$ 位清除。
- 13 x。将该集合中第 $x$ 位翻转。
- 14 x y z。将集合的第 $x$ 位与第 $y$ 位进行按位与操作,并设置到第 $z$ 位。并输出原有集合。
- 15 s。将集合与另外由字符串 $s$ 构成的集合进行进行按位与操作。并输出原有集合。
- 16 x y z。将集合的第 $x$ 位与第 $y$ 位进行按位或操作,并设置到第 $z$ 位。并输出原有集合。
- 17 s。将集合与另外由字符串 $s$ 构成的集合进行进行按位或操作。并输出原有集合。
- 18 x y z。将集合的第 $x$ 位与第 $y$ 位进行按位异或操作,并设置到第 $z$ 位。并输出原有集合。
- 19 s。将集合与另外由字符串 $s$ 构成的集合进行进行按位异或操作。并输出原有集合。
- 20 x。将集合左移 $x$ 位。并输出原有集合。
- 21 x。将集合右移 $x$ 位。并输出原有集合。
- 22 s。判断集合与另外由字符串 $s$ 构成的集合相等。如果相等输出 YeS,否则输出 no。
- 23。将集合转化成为 string 输出。
- 24。将集合转化为 unsigned long long 输出。
保证每次操作都是合法。
Input
第一行一个正整数 $m\ (10^2 \leq m \leq 5 \times 10^5)$ 表示询问次数;
接下来的 $m$ 行每行一个合法的操作,具体操作如题目描述。
接下来的 $m$ 行每行一个合法的操作,具体操作如题目描述。
Output
若干行,对每个需要输出的操作输出对应的数据。
Constraints
对于 $100\%$ 的数据有 $N≤1,500,000,\ A_i≤10^8$。
Sample 1 Input
41
23
24
1 1
1 45
5 38
3
4
6
7
8
2 0 1
6
7
8
11
3
4
5
11
7
6
10 50
6
7
3
4
24
1 39
13 39
1 39
13 39
1 39
13 5
1 42
16 5 15 42
1 42
20 5
23
24
21 3
24
23
Sample 1 Output
111111111111111111111111111111111111111111111111111111111111
1152921504606846975
1
1
yes
60
0
Yes
NO
yEs
Yes
NO
yEs
0
60
no
YES
No
Yes
NO
1
59
1125899906842624
0
1
0
0
000000000100000001000000000000000000000000000000000000100000
1
000010000000100000000000000000000000000000000000010000000000
000010000000100000000000000000000000000000000000010000000000
36169534507320320
000000010000000100000000000000000000000000000000000010000000
4521191813415040
000000010000000100000000000000000000000000000000000010000000