首页 > 其他分享 >2024.5.1 听课纪录

2024.5.1 听课纪录

时间:2024-05-01 19:56:30浏览次数:30  
标签:10 le 2024.5 原题 纪录 sum DFS 听课 binom

今天讲了不少有趣题,但是可惜很多题没有提交入口,不牛。

先放个课件吧。 度盘

Codechef - Cycles And Colorings 加强

给出一张 \(n\) 个点 \(m\) 条边的无向连通简单图,你需要完成以下两个任务的其中一个,输出方案。

  1. 给出一个三染色方案。
  2. 找一个奇环,使得删去它后图仍连通。(注意:这里只删边)

\(n\le 10^5,m\le 2\times 10^5\) 。

原题:四染色


首先找一棵生成树,然后把树上的边删掉。如果剩下有奇环直接做完了。否则可以得到两个二分图,一个二分图有两种颜色,合起来就是四种颜色。然后原题就做完了。

事实上,我们能做的更好。考虑这样找生成树:

  1. 把 \(1\) 染成黑色,然后从 \(1\) 开始 DFS 。
  2. 假如当前 DFS 到的点 \(u\) 是黑色,那么就先把 \(u\) 的所有没有颜色的邻居染成白色,然后依次 DFS 每个被 \(u\) 染的点。
  3. 否则 \(u\) 是白色,那么依次染黑每个没有颜色的邻居,并在染黑一个点后立刻 DFS 这个点。

注意这两者的区别:一个是先染所有邻居再 DFS ,一个是边染边 DFS 。

这样做的好处是不会有两个黑点相邻,那么最后黑点就只用一种颜色。

时间复杂度 \(O(n+m)\) 。


AGC001E BBQ Hard 加强

有 \(n\) 个数对 \((a_i, b_i)\),求出

\[\sum_{i=1}^{n}\sum_{j=i + 1}^{n}\binom{a_i+b_i+a_j+b_j}{a_i+a_j} \]

\(n\le2\times10^5,\sum_{i}(a_i+b_i)=m\le 2\times 10^7\) 。

原题:\(a_i,b_i\le2\times10^3\) 。


首先可以得到这个式子的一个含义:从 \((-a_i,-b_i)\) 走到 \((a_j,b_j)\) ,每次向上或向右走,求方案数。由此不难得到原题做法。

题目限制是若干数加起来 \(\le 2\times 10^7\) ,那么不难想到根号分治。小对小、大对大直接暴力,小对大可以注意到一定会经过 \(x+y=0\) 这条直线,先从小块走到直线上再走到大块,这样直线上只有 \(O(\sqrt m)\) 个点被经过,那么暴力即可。复杂度 \(O(m)\) 。

上面那个没看懂也没关系,我们有个更巧妙的方法。注意到

\[\binom{a_i+b_i+a_j+b_j}{a_i+a_j}=\sum_x\binom{a_i+b_i}{a_i+x}\binom{a_j+b_j}{a_j+x} \]

那么答案等于

\[\begin{align} \sum_{i}\sum_j\binom{a_i+b_i+a_j+b_j}{a_i+a_j}=&\sum_{i}\sum_j\sum_x\binom{a_i+b_i}{a_i+x}\binom{a_j+b_j}{a_j-x} \\=&\sum_x\sum_{i}\sum_j\binom{a_i+b_i}{a_i+x}\binom{a_j+b_j}{a_j-x} \\=&\sum_x(\sum_{i}\binom{a_i+b_i}{a_i+x})(\sum_j\binom{a_j+b_j}{a_j-x}) \end{align} \]

考虑一个 \(x\) ,左边组合数有值的充要条件是 \(x\in[-a_i,b_i]\) ,也就是说,对于一个 \(i\) ,对左边求和有贡献的 \(x\) 只有 \(O(a_i+b_i)\) 个,右边显然是一样的,那么暴力计算上面那个式子即可。


草不想写了,看课件去吧

完结撒花!

没绷住,怎么只写了最简单的两个题

感觉全错了啊,下次还是给有难度的题单独写个题解好了

标签:10,le,2024.5,原题,纪录,sum,DFS,听课,binom
From: https://www.cnblogs.com/Z-301/p/18169553

相关文章