23/09/20 模拟赛总结

发布时间 2023-09-25 13:31:12作者: cannotdp

时间安排

7:50 - 8:00

看 A。

8:00 - 9:30

想了想性质,得到了一个假做法,直接莽上去了。

9:30 - 10:20

手造了一组数据,发现做法假了,开始打暴力的分段(然而海伦公式丢精度,最后只有 \(20\) 分)。

10:20 - 11:00

看 B。写了 B 的 \(50\) 分暴力,但是眼瞎没看到数据范围,搞成了 \(O(n^4)\),直接变成了 \(20\) 分。

11:00 - 11:10

看 C。写 C 的特殊性质分。

11:10 - 11:30

看 D,写 D 的 \(40\) 分,但是没开 long long 挂成了 \(20\)

11:30 - 11:50

检查 freopen,文件夹。

总结反思

  1. 要先把 \(4\) 道题目都读一遍,想好拿分策略,不要上来盯着一道题做。
  2. 没有十足的把握下一定要先写暴力分段。
  3. 注意题目的数据范围,避免数组越界或不开 long long。

题解

A.三角形的面积

三角形面积公式:

\[S=\frac{|A\times B+B\times C+C\times A|}{2} \]

其中 \(A\times B=A.x\times B.y-A.y\times B.x\)
观察公式,发现只与三个点的奇偶性有关,直接 \(2^3\) 枚举然后求出方案数即可。

B.完全背包问题

\(f_{i,j,k}\) 表示考虑了体积为 \(i...n\) 的物品,选了 \(j\) 个,总体积为 \(k\) 的最大价值。

\[f_{i,j,k}=\max(f_{i+1,j,k},f_{i,j-1,k-i}+v_i) \]

由于所有考虑过的物品体积都 \(\geq i\),所以 \(j \leq \frac{i}{n}\)。所以时间复杂度为

\[O(n^2(\frac{n}{1}+\frac{n}{2}+...+\frac{n}{n})+m)=O(n^2\log n+m)。 \]

C.子集询问

若已知 \(x_{p_1} \leq x_{p_2} \leq x_{p_3} \leq \ ... \leq x_{p_n}\),则可以在 \(O(2^n)\) 内得到一组解,于是直接 \(O(n!)\) 枚举 \(p\) 的全排列即可。

D.寻找宝藏 △△△

  • \(f_i\) 表示考虑 \([1,i]\) 这些数对且选了 \(i\) 的情况下 \(v\) 总和的最大值;\(g_i\) 表示考虑 \([i,n]\) 这些数对且选了 \(i\) 的情况下 \(v\) 总和的最大值。可以使用树状数组在 \(O(n\log n)\) 的时间内求出。
  • \(l=1,r=k\),答案显然为 \(\max(g_i)\),其中 \(i \in (l,n]\)。考虑从 \([l,l+k-1]\) 推到 \([l+1,l+k]\)\(ans=\max(f_1,f_2,...,f_l)\) 或者 \(max(f_i+g_j)\),其中 \(i \leq l,j > l+k\)\(p_i \leq p_j\)
  • 很明显可以使用线段树维护,时间复杂度 \(O(n\log n)\)