题目给定 m m m个整数序列,要求尝试找到一种分类方式,将每个序列分到 2 2 2个可重集合中。要求在分类完成后,两个集合的完全相同。
首先考虑一定非法的情况:容易发现:
- 对于某个序列长度为奇数的情况,一定不存在解(无法对半分)
- 对所有的数字开桶记录,如果存在某个数字的出现次数为奇数,则一定不存在对等的分配方案
我们可以对每个序列的编号向其元素编号连无向边,可以发现分 L , R L,R L,R符合二分图的性质,那么直接遍历二分图进行染色即可。
注意,由于序列的编号和元素的编号会发生重叠,因此我们对元素的编号需要进行一个映射。一种方法是先记录集合的数量,然后数字从集合的数量 + 1 +1 +1开始编号。
Accepted Code#include
#define int long long
#define showYes std::cout
关注
打赏
- 回坑记之或许是退役赛季?
- [LCT刷题] P1501 [国家集训队]Tree II
- [LCT刷题] P2147 洞穴勘测
- 2022-2023 ICPC Brazil Subregional Programming Contest VP记录
- [线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
- The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
- CF580E - Kefa and Watch 线段树维护哈希
- HDU5869 Different GCD Subarray Query 离线查询/区间贡献
- 27.CF1004F Sonya and Bitwise OR 区间合并线段树
- 26.CF1000F One Occurrence