【20231029算法进阶班】NOIP训练赛#27 赛后总结

做题历程

8:00 ~ 8:40

看A做A。

8:40 ~ 9:40

看B做B。

9:40 ~ 10:40

看了看C、D,感觉C不好写暴力,先打D暴力再看看。

10:40 ~ 11:40

写C暴力。

11:40 ~ 12:00

检查。

总结

  • 写代码要注意细节。

题解

A

离谱,\(n^2\) 暴力就能过。

B

构造,最长的情况就是对于每段连续大于号,都弄成第一个位置最小的情况,

最短的情况就是把大于号小于号弄成相反的,输出 \(n-ans_i+1\)

C

\(f_{i,j}\) 表示上一步朝下走,走到 \((i,j)\) 下一步要向右走,方案数。

\(g_{i,j}\) 表示上一步朝右走,走到 \((i,j)\) 下一步要向下走,方案数。

转移显然。

可以预处理出从 \((i,j)\) 最多能朝下走和朝右走多少步。

D

链的做法显然但是写挂了

然后考虑从 \(u\)\(v\) 分别走到 \(lca\),可以照搬链的做法。

但是如果有一种线路,正好可以一步跨过 \(lca\),答案就要减 \(1\)

我们考虑 \(U\)\(V\) 是走到最后,再走一步就到 \(lca\)\(lca\) 上面的点。

有如上线路的,一定是一个点在 \(U\) 子树内,一个点在 \(V\) 子树内的线路。

考虑将使用 \(dfs\) 序,就可以将问题转化为二维数点。

posted @ 2023-10-30 09:43  PeyNiKge  阅读(22)  评论(0)    收藏  举报