T1
题意
给出\(a,b\)两个数的异或、与、或值,求有序数对\((a,b)\)的种数,如果值为-1则表示不确定,保证三个值不全为-1,无数解输出inf
解法
签到题,氵氵氵
首先有\(or-and=xor\),如果有两个数则相当于三个数都已知;
设\(count(i)\)表示\(i\)在二进制下1的个数
只知道一个数:\(and,xor:inf;or:3^{count(or)}\)
三个数都知道:将每一位分开算,每当存在\((or=1,and=0)\)时答案乘2
注意判断无解即可。。。
Code
T2
题意
给一个开始为空的集合,支持与一个给出的新集合求交/并,以及给集合中所有元素加/减1,\(\sum\)新元素\(\leq 3e6\)
解法
签到题2,水双淼
一开题目,bitset?不会用,只能打暴力
显然开个桶表示集合,只要保证复杂度只与新元素的个数有关既可保证不超时
(如果用\(set\)的话,时间复杂度与集合中元素个数有关,可能会T)
取并集:对于一个新元素,如果它不存在于桶中,则加入桶,计算贡献,否则不管
取交集(我的做法):清空原集合所有元素,然后加入交集中的所有元素
加、减1,用个标记\(tmp\),一个元素加入集合时先加\(tmp\),输出答案时减去\(tmp\),加减1对\(tmp\)加减即可
Code