2021.09.27am
9.27AM
| 预期 | 实际 | |
|---|---|---|
| A | 100 | 50 |
| B | 100 | 100 |
| C | 100 | 100 |
| D | 20 | 35 |
| E | 50 | 20 |
| S | 370 | 305 |
可能水,一定菜
A Largest Rectangle in a Histogram \(\blacktriangle\)
- 单调栈模板题。
B 没有上司的舞会 \(\blacktriangle\)
- 一道简单的树形 DP 。
之前还做过一道三个状态的 - 明显有这样一个关系:选父亲就不能选儿子,不选父亲可以选儿子。
2-SET - 那么我们就得到了DP方程(0表示不选,1表示选):
\[\begin{aligned}
dp[fa][0]&=\sum \max(dp[son_i][0],dp[son_i][1])\\
dp[fa][1]&=\sum dp[son_i][0]\\
\end{aligned}
\]
C 阶乘分解 \(\blacktriangle\)
- 由于是分解成质因数,并且是 \(N!\) ,所以必须得有线性求质数。
- 在求质数的同时我们要统计答案。这个有两种做法:
-先说我自己的: \(1~N\) 内 \(k\) 的倍数共有 \(\frac Nk\) 个,那么每次找到一个质数,它的总出现次数为\(\frac N k+\frac {N}{k^2}+···\),时间复杂度\(O(\frac{n\log n}{\ln n})\)- 再说另一种:利用了欧拉筛的性质:每个数都会乘上质数表内的数,每个合数都从质数表扩展而来,那只要每次扩展的时候增加乘的质数的次数,答案就不会漏掉。时间复杂度\(O(n)\)。
D 欧拉回路 \(\blacktriangle\)
- \(RT\),不过数据很坑(没有SP)。
- 欧拉回路无向图要求是每个点出度(或入度)为偶数,有向图则要求出度等于入度。
- 访问欧拉回路时要涉及到删边操作,不然T的概率很大。
- 直接打上标记不跑只能保证不错,但肯定还是会T。不过其实也蛮好实现:
int i=head[x];//要访问的第一条边
while(pan[i])i=e[i].nx;//这条边被标记了,跳过
if(i==0)return;//删完了
head[x]=i;//修改第一条边为第一条没有标记的边
E 括号配对 \(\blacktriangle\)
- 其实蛮简单一道区间DP,考试写挂了····。
- \(dp[i][i+k]\) 表示 \(i\) 到 \(i+k\) 区间内需要添多少个。
\[\begin{aligned}
dp[i][i+k]&=\min(dp[i][i+k],dp[i+1][j+k+1])\\
dp[i][j+k]&=\min(dp[i][i+k],dp[i][j]+dp[j+1][i+k]);
\end{aligned}
\]

\(\cal {Made} \ {by} \ {YuGe}\)
浙公网安备 33010602011771号