「UNR2」胡

  T1

    如果用了>=3种颜色,这部分的方案数是x*(y+3)!%6=0,所以只考虑一种和两种

    若m>0,则只能用两种,判断每个联通块是不是二分图,若不是则输出0

        否则答案为$C_n^2(2^k-2)$

    若m=0,再加上颜色数

  T2

    设第i行的点数sx_i,列sy_i

    对一个点(i,j)假如说sx_i>sy_j,那么说这个点是第j列的关键点,否则说它是第i行的关键点

    那么一条线的关键点数量是不超过$sqrt{n}$级别的

    那么考虑如何去完成这些操作

    

    修改并维护最值

      以一行为例,修改只暴力修改关键点(同时更新其所在列的答案),非关键点打上标记

      查询一列时,暴力枚举关键点,带上其所在行打上的标记更新答案,而非关键点的答案是已经维护好的。

    移动(合并)

      那么其实需要完成的目标就是使得合并之后,查询每个点的标记是正确的,且仍然满足关键点的性质

      维护标记:对于行列分别维护并查集,按秩合并,节点上维护标记差,每个位置的真实值就是父链求和

      关键点:由于对于这两列来说,sy都增大了,所以只会出现原本的关键点变成非关键点的情况,暴力检查即可

    去重

      合并两列后原来两个横坐标相同的点就变成重点,那么关键点是$sqrt{n}$级别就不对了

      所以要对关键点去重,为啥不对非关键点去重,感性理解的话大概因为它们本来就不会作为关键点被这一列暴

      不影响这一列的复杂度而且也不影响其所在的行的复杂度(?),所以先放着不管

      每次合并都去重的话就是hash,然后也可以达到一定数目比如$1.5sqrt{n}$就暴扫重构

      每次一定删除$sqrt{n}$级别的点,所以复杂度$nsqrt{n}logn$?我并没把这题A掉所以可能胡了

  T3  好像已经讲过?

    首先冷静一点发现答案就是枚举所有xor和为0的集合S然后累加2^|S|

    部分分1 值域小

      dp[i][j]表示前i个点xor和为j的答案和

      $dp[i-1][j]->dp[i][j]$,$dp[i-j][j^a[i]]->dp[i][j]$

    部分分2 种类少

      每种数选奇数或偶数个的效果相同,预处理每种数选何种奇偶性的方案数(大概是一些组合数相加)

      然后还用上边那种dp

    部分分3 $bit3^{bit}$可过

      发现dp转移的过程其实是对$[1,0,0......0,2,0......0]$做xor卷积,最后得到的结果的第0位就是答案

      怎么球呢,由于这个数组特别特别稀疏,可以发现在fwt后每个位置上只有2种值$1+2$和$1-2$    

      $max_{a}*n+max_{a}log$?

      其实只需要知道里边有几个-1

      什么时候第i个数组的第x位是-1,当$bitcnt(a_i and x)$是奇数时

      考虑枚举$t=bitcnt(a_i and x)$,再枚举$s$是t的超集,s的权值是$a_i=s$的i的个数

      什么样的x会得到s的权值个数量的-1,即除了t以外的部分s和x无交

      那么s的贡献是针对一个子集,感觉上大概可以这样做:

        s的贡献送给$U^s$,然后超集求和,设每个位置的值为$v_i$

        对于一个x,枚举其所有大小为奇数的子集y,累加$v_{x^y}$即为-1的个数

    部分分4 $bit2^{bit}$可过

    FWT的和等于和的FWT

    所以先求和,再FWT,可以知道若干-1和若干3的和是多少

    又知道总共是n个,可以解出个数

    或者想到要求和但是没想到FWT的和等于和的FWT

      

    $sumlimits_j (-1)^{|a[j] and k|}$还是FWT

  

原文地址:https://www.cnblogs.com/yxsplayxs/p/13492807.html