集训 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了。

 

posted @ 2017-06-23 21:03  CHADLZX  阅读(174)  评论(0编辑  收藏  举报