集训 0622
T1:
一个费用流,考场硬推费用流模型推出来了。
大致的思路是转化为区间K覆盖模型来做,然后需要多一个限制是每个区间不能覆盖超过一个限度。
先假定全部选B,计算贡献。然后计算将某些B转成A。
使用区间K覆盖的第二种思路,每个区间转成一条边,每个点转成对几个区间的覆盖。
然后跑费用流。
这就需要用上下界来做这个事情,但后来我发现上下界好像没什么必要。
具体的自己对拍自己做。
T2:
求有多少区间使得此区间的所有数都出现了奇数次。
沿用偶数次的经验,不过每次不再xor第一次出现的值。
具体的方法是先给每种颜色随即一个权值,
从右到左枚举左端点,然后每更新一个端点,需要把原本第一次出现这种颜色的地方改成这种颜色的权值(之前这个地方是0)。
然后需要更新前缀xor值,这个不好维护,因为查询需要使用BST,考虑通过牺牲查询复杂度,降低修改复杂度,
然后可以分块,每个块内map维护前缀xor值。
可以做到查询修改sqrt(n)logn。
值得一提的是,这题O(松)优化可过。
T3:
k维空间,然后...定义这个点为白点,否则为黑点。
可以分析出,若在K维空间中走到此点的方案数mod 2等于0,为白点,否则黑点。
实际上这玩意可以组合数计算,在这个题里只要一个组合数mod 2==0则没有贡献,
有一个结论是C(i,j)mod 2==1 当且仅当i|j==i,然后发现这个条件限制的其实是对于每个二进制位 选择方案 中 只有一个1.
然后数位DP了。