本周暂无
百度之星复赛(凉凉,只写了两题没拿到衣服)
一场cf div2,rating小涨
暂无
无
百度之星一场
暂无
无
求求来点正常cf div1
遇见类似原题的题不要被轻易影响
无
补题+学习
补题+整理板子
该补点难题了
区间,动态规划,线段树
给出$n$个区间$[L_i,R_i]$,等概率取其中一个子集$a$,得到的贡献为$|[L_{a_1},R_{a_1}]\cap[L_{a_2},R_{a_2}]\cap\ldots\cap[L_{a_m},R_{a_m}]|^2$,求贡献的期望值(模$998244353$意义下)。
$1\le n\le 5\times 10^5,0\le L_i\le R_i\le 10^9$
这里给出两个方法,一种是大家用的比较多的方法;另一种是$dp$通解,也就是不仅可以做平方贡献,随便和区间有关的贡献都可以。
问题首先转化为所有子集的贡献和。
将区间交的平方,看作是区间交里面元素两两配对的个数,进一步,是左点。那么问题就是每一对元素,要求出其被区间交覆盖的总次数。我们将所有区间按左端点从小到大排序,按顺序加入区间$i$,这样我们看每个离散化后的原子区间,被区间覆盖的次数,就是左到右不递增了。那么必包含区间$i$时,每个原子区间的每个配对右点在区间交中带来的贡献数的和,就是$(原子区间长度乘以左边的点的个数的和的两倍+原子区间长度平方)\times(2^{覆盖数}-1)$。
这些信息,包括次数和乘积等,可以用线段树加以维护,每一次区间更新,然后区间查询即可。
第二种方法是题解的方法:
所以可以写出一个$O(n^2)$的$dp$:
最后使用线段树或其他数据结构就可以将该$dp$优化到$O(n\log n)$
赛场上想的方法也是用线段树,很麻烦,第一种平方的处理很有意义。
好题,两种方法的思考都很有技巧,尤其是第二种,普适性似乎很广,当做一种套路记住好了。
莫比乌斯反演
$G_u(a,b)=\frac{\varphi{ab}}{\varphi{a}\varphi{b}}$
求解$\sum_{i=1}^{n}\sum_{j=1}^{m}G_u(i,j)$
$gcd(a,b)=d,\varphi(ab)=\varphi(a)\varphi(b)\frac{d}{\varphi(d)}$
$G_u(a,b)=\frac{gcd(a,b)}{\varphi(gcd(a,b))}$
$ans=\sum_{d}\frac{d}{\varphi(d)}\sum_{a,b}[gcd(a,b)==d]$,可以看出是经典莫比乌斯反演问题
时间比较紧,需要线性预处理$1\sim n$逆元,进一步$\sum_{a=1}^n \sum_{b=1}^m [gcd(a,b)==d]=\sum_{i=1}^\frac{n}{d}\sum_{j=1}^\frac{m}{d}[gcd(i,j)==1]$,可以整除分块进一步优化
树形dp,二分图最大权匹配,树哈希
给定两棵同构的树,需要找到一个对应关系使得相同的标号尽可能多。
树形dp,dp[i][j]表示把第一棵树的i结点和第2棵树的j节点对应起来所需要的最小花费。
转移的时候对它们的子树做一个二分图最大权匹配即可,这样总的复杂度仍然是$O(n^3)$
cmx鸽鸽写的时候树哈希被卡了,需要注意