标签:集合 math inline rac block log 三元 处理 比较
设阈值\(L\),预处理\(i\le L\)的祖先最优背包
对于一次询问,\(i>L\)的部分可以状压
显然,题目可以直接转化为\(S=0,T=2^L-1\),\(A_i\in[0,2^T)\)
令\(f(U)\)为集合大小\(\in[1,K]\),集合中所有数\(\And U\)相同的个数
\(ans=\sum\limits_{U}(-1)^{popcount(U)}f(U)\)
证明:
考虑对于集合大小\(\in[1,K]\)的集合,被统计了几次
这时\(f(U)的意义可以描述成:\)U$中的位上为\(1\)时是否集合上该位相同,剩下的比较显然了
考虑如何计算\(f(U)\),枚举每个\(U\),然后\(O(N)\)遍历\(a_i\)
\(O(2^LN)\)
没有用到任何高级算法,非常巧妙!!
令一种稍劣的方法
\(S=0,T=2^L-1\)的意义在于,选择的集合每一位出现过\(0\)和\(1\)
固定集合内的一个元素,然后要做的事就变成:找到一个集合,使得集合中的位出现过某个数字,可以通过fwt配合容斥解决
具体来说,现在的问题可以描述成选择一个集合,其与为\(0\)
令\(f(U)\)为\(a_i\And U=U\)的个数,令\(g(i)=\sum\limits_{j=0}^{k-1}{i\choose j}\),\(\sum\limits_{U}(-1)^{popcount(U)}g(f(U))\)
证明同上
\(O(n\cdot L2^L)\)
不失一般性地,我们来统计\((0,i),(j,0)(W,k)(i\le k)\)
令\(d=k-i\)
由毕克定理,三角形内部点数\(A\),边界上点数\(B\),三角形面积\(S\),有
整理
需要计算三元组\((i,j,d)\)的个数,其满足:\(iW?(i,j)?(W?j,i+d)\le 2K+(W,d)?2?dj\)
固定\((j,d)\),右侧是定值,令其为\(R\)
由于\((i,j)+(W?j,i+d)\le W\),当\(i\le \frac{R}{W}\)时恒满足,\(i\ge \frac{R}{W}+1\)时恒不满足
仅需格外计算\(i=\frac{R}{W}+1\)即可
\((j,d)\)使得\(R\ge 0\)的个数\(O((K+W)log(K+W))\)
Tokio Marine & Nichido Fire Insurance Programming Contest 2020 English
标签:集合 math inline rac block log 三元 处理 比较
原文地址:https://www.cnblogs.com/Grice/p/13199865.html