A. 位运算
简单分情况讨论,按位数讨论即可。
B. 集合论
使用数组解决问题。
并操作:判断这个元素是否在数组内,没有就加入。$O(1)$
交操作:使用时间戳。如果之前有这个元素,将这个元素的时间更新。最后时间不对的相当于没有了。$O(1)$
+1:用一个变量记录。$O(1)$
-1:同理。$O(1)$
bitset大法吼
C. 连连看
转化题意,求在同一个联通块颜色相同的点对。
考虑颜色相同的点对可能会同处在几个联通块内部,所以考虑容斥,奇加偶减。
用hash_map存联通块状态时的点的个数。
最后还要加上没有任何联通块相连的相邻的相同颜色的点对数。
考试时没做出来的原因是:没有成功的转化题意,没有把颜色相同的点一起讨论,没有深入思考,只想打部分分。