WX 是我们的教练,不定时更新。
他曾经强调:“实践出真知,实践长真才。坚持在做题中学习、学习中做题是信息竞赛选手成长成才的必由之路。”处在前所未有的变革时代,干着前无古人的伟大事业,广大的信息竞赛选手需要如饥似渴学习、一刻不停提高,坚持在干中学习、学习中干。
二分求解滑动窗口
怎么求解“长度至少为 \(k\) 的区间的最小值”的最大值?
先二分一个值,然后去遍历整个数组寻找,时间复杂度为 \(O(n\log V)\)。
为啥不直接写滑动窗口呢?因为长度至少是 \(k\) 而不是一定是 \(k\)。
求解两个字符串的子串
“考虑怎么用 SAM 做。”
“为啥不用 SA?”
“其实我们是在为做多个字符串的公共子串做准备。”
调和级数求解 \(\sum d(n)\)
设 \(d(n)=\sum\limits_{i=1}^n [\gcd(i,n)=n]\),那么怎么求解 \(\sum\limits_{i=1}^n d(i)\) 呢?
考虑枚举其因子,第 \(i\) 个数一定是 \(i,2i,\cdots ,\lfloor \dfrac{n}{i}\rfloor\times i\) 的因数。
一个一个遍历判断,时间复杂度为 \(O(n\log n)\)。
求解完全积性函数
详细讲解了怎么求解积性函数,然后遇到了一个完全积性函数。
这是一个完全积性函数,可以用线性筛求解,举个例子。
(沉默良久
你们自己去在了解一下吧。
关于 \(\varepsilon\)
应 @E_M_T 的要求添加的。
\(\varepsilon(n)=[n=1]\) 是单位函数,\((\varepsilon*f)(n)=f\),也就是只有 \(n=1\) 时 \(f(n)=0\)。
至少与恰好
设 \(f(i)\) 表示至少 \(k\) 个元素是集合的交集的方案,那么有:
设 \(g(i)\) 表示恰好 \(k\) 个元素是集合交集的方案数,可以得到:
反演可以得到:
群
WX 的 PPT 没有解释 Burnside 是把具体的方案作为群而 Polya 是把位置作为群,这直接导致学生无法理解 \(16\) 个项的集合是怎么通过 \(4\) 的置换解决的。
官方解释:你先不要管染色,你就是去对于 Burnside 引理的位置去考虑,不动的是下标而不是值。
钓鱼
学生去找他钓鱼,告诉他自己无法理解置换是置换下表还是置换值。
官方解释:显然是下标,因为置换的集合是可以重复的,如果置换值就没有意义了。
学生发现 oi-wiki 上置换的是值,询问他原因。
官方解释:oi-wiki 不一定就是对的,它还不是很多人去编辑出来的。
学生指出他 PPT 上定义的是集合,而众所周知集合是不可重的。
官方解释:我的定义都是去网上找的,如果有问题那就按照你自己的理解。
HNOI2008 Cards
因为洗牌操作构成了一个群,所以只有原置换存在不动点,所以有: