【2023SDNOIP赛前特训第三场】 赛后总结

做题历程

8:00 ~ 8:40

看A做A。

8:40 ~ 9:40

看B,推出了一个接近正确的式子。

但是不会卢卡斯定理,还尝试求了一下。

看了看C,D。

C看起来是一个容斥,D看起来是树状数组,先写C。

9:40 ~ 11:20

写C部分分,发现正解做法,稀里糊涂推出了一个不正确的式子,瞎蒙改改对了。

11:20 ~ 12:10

写D,发现得用线段树,写。

12:10 ~ 12:30

又去看了看B,把式子改得几乎完全对,但是不对,GG。

总结

  • 知识点要复习。

题解

A

可以得到,一个位置如果是 \((i,j)\) 为绿色,那么把第 \(i\) 行染色一定先于把第 \(j\) 列染色。

红色同理。

然后拓扑找环,无环就合法。

B

推式子很简单。

卢卡斯定理:

\[C_{n}^{m}\equiv C_{n/p}^{m/p}*C_{n\mod{p}}^{m\mod{p}}\pmod{p} \]

适用于模数 \(p\) 较小。

递归即可。

Code
int lucas(int n, int m){
    if(n < p && m < p) return C(n, m);
    return lucas(n / p, m / p) * C(n % p, m % p) % p;
}

C

容斥。

\(a_i\) 互不相同的情况很好考虑。

发现正解和那个差不多。

设一个 \(dp\),表示方案选择数。

就行了我也不大知道

D

线段树裸题。

posted @ 2023-11-04 15:45  PeyNiKge  阅读(26)  评论(0)    收藏  举报