T1

题意

给出\(a,b\)两个数的异或、与、或值,求有序数对\((a,b)\)的种数,如果值为-1则表示不确定,保证三个值不全为-1,无数解输出inf

解法

签到题,氵氵氵

首先有\(or-and=xor\),如果有两个数则相当于三个数都已知;

\(count(i)\)表示\(i\)在二进制下1的个数

  1. 只知道一个数:\(and,xor:inf;or:3^{count(or)}\)

  2. 三个数都知道:将每一位分开算,每当存在\((or=1,and=0)\)时答案乘2

注意判断无解即可。。。

Code

T2

题意

给一个开始为空的集合,支持与一个给出的新集合求交/并,以及给集合中所有元素加/减1,\(\sum\)新元素\(\leq 3e6\)

解法

签到题2,水双淼

一开题目,bitset?不会用,只能打暴力

显然开个桶表示集合,只要保证复杂度只与新元素的个数有关既可保证不超时

(如果用\(set\)的话,时间复杂度与集合中元素个数有关,可能会T)

  1. 取并集:对于一个新元素,如果它不存在于桶中,则加入桶,计算贡献,否则不管

  2. 取交集(我的做法):清空原集合所有元素,然后加入交集中的所有元素

  3. 加、减1,用个标记\(tmp\),一个元素加入集合时先加\(tmp\),输出答案时减去\(tmp\),加减1对\(tmp\)加减即可

Code

01-04 19:34
查看更多