「闲话随笔」Yubai 数数
国庆快乐!
可是已经开学了,奥赛生只配放 7 + 3 = 2- .
衡实初中部为啥没有集训啊?可能是因为以前机房在衡实只能去衡实集训,所以就把初中带上了吧,本来不会集训的 .
诶不对好像是不是初中国庆一直不集训 .
居然已经闲话一周年了,但是好像一共没写几篇闲话 .
有开个日记记录每天的尝试,结果咕了 . 我是这样的 .
推歌:《UNDER THE TREE》.
Amazing Counting problem!
给定两个排列 \(p\) 和 \(q\),如果在 \(p\) 选了一个元素,那么在 \(q\) 中标记相同位置和相同数值的元素 .
例如 \(p:(1, 3, 2, 4), q:(1, 2, 3, 4)\),当选择 \(p_2 = 3\) 时,相同位置的 \(q_2\) 被标记,相同值的 \(q_3 = 3\) 也被标记 .
求出在 \(p\) 中选出 \(i\) 个数,\(q\) 中标记 \(j\) 个数的方案数 .
和 5k 一起想的,sto 5k orz .
考虑建二分图,发现一定连出若干个长度为偶的环 . 感性理解是对的,但是我不知道怎么写成严谨的证明 .
不难发现问题转化为求若干条不交的路径,覆盖 \(i\)个上部点和 \(j\) 个下部点 .
对于一条路径只有两种情况:一整个环或是起点和终点均为下部点,前者显然,后者考虑以一个上部点为起点时,与它相连的两个下部点必选,它就不是起点了 .
不同环互不影响,考虑对每个环单独计数 . 设 \(f_{i, j, k}\) 表示当前的环上,前 \(i\) 个点中选了 \(j\) 个上部点,\(k\) 个下部点 . 拆坏为链后前缀和转移 . 均摊下来总复杂度为 \(O(n^3)\) .
考虑合并环的贡献 . 设 \(g_{i, j, k}\) 表示前 \(i\) 个环选了 \(j\) 个上部点,\(k\) 个下部点,枚举当前环贡献多少个上部点和下部点,可以 \(O(n^5)\) 转移出答案 . 大概是 \(g_{i, j, k} = \sum_{x = 0}^{j}\sum_{y = 0}^{k}g_{i - 1, j - x, k - y}f_{i, x, y}\),上下界也许需要卡一下 .
感觉复杂度瓶颈在合并上于是仔细观察,发现是一个天然的卷积形式,于是考虑使用科技 poly-2D,可以做到总时间复杂度 \(O(n^3\log n)\) .
但是你会发现没有一个上界可以卡住,这个复杂度是非常非常松的 .
其实并不很好,因为原题给出了数据范围 \(n\le 3000\),应该存在一个 \(O(n^2)\) 的优秀做法,那么作者有什么美妙的解法呢?
作者亲自回复!
有没有老哥可以提供一个更好的解法?感觉还挺有意思的 .
标签:数数,闲话,复杂度,下部,上部,Yubai,随笔 From: https://www.cnblogs.com/Keven-He/p/chat_20231001.html