【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
线段树裸题。

浙公网安备 33010602011771号