20230920

20230920 NOIP#11总结

时间安排

7:50~8:30

\(A,B,C,D\) 感觉都有好写的暴力。

8:30~10:10

开写四题暴力,写 \(D\) 的过程中又多想到了一档暴力。

10:10~11:50

罚坐接近两小时,多的分数愣是一点都不会.

总结反思

  • 缺乏思维能力
  • 想不到什么优化技巧

题解

A.叉积公式

三角形面积是否是整数,只关心坐标的奇偶性,简单排列组合。

B.特殊的完全背包

由于体积为 \(0\sim n\) 所以倒着遍历每个最多取 \(\frac{n}{i}\) 次,然后跑完全背包。

C.不知道哪类的题

钦定 \(x_{p_1}\leq x_{p_2}\leq x_{p_3}\cdots \leq x_{p_n}\)\(p\) 序列是一个 \(1\sim n\) 的排列。
根据 \(Q\) 条约束条件,对于一个约束集合 \(S\) ,则最小值一定在 \(p\) 最小处取,最大值亦然,据此可以求出每个数的取值范围 \([l_i,r_i]\),进而可以 \(2^n\) 枚举所有状态求出在此 \(p\) 序列下的一组解。
在枚举 \(p\) 序列的全排列,分别求答案,在 \(O(n!2^n)\) 的复杂度下求得答案。

D.数据结构优化 DP

\(f_i\) 表示考虑 \([1, i]\) 且必选 \(i\) 的最大值,\(g_i\) 表示考虑 \([i, n]\) 且必选 \(i\) 的最大值,可以用树状数组在 \(O(n\log n)\) 内求得。
易得

\[ans = \max(\max_{i\in [1,l]}\{f_i\} ,\max_{p_i \leq p_j}\{f_i + g_j\}[i \leq l][j > l + k]) \]

\(l\) 变为 \(l+1\) 时,\(f_l\) 会对所有位于 \(g_j,p_j\in [p_l,n]\) 产生贡献,而 \(g_{l+k-1}\) 要删除,那么这个可以在按 \(p_i\) 排序后用线段树维护即可。

posted @ 2023-09-21 16:05  programmingysx  阅读(32)  评论(0编辑  收藏  举报