JOI 2022 final

· · 个人记录

还有机会做剩下的场吗???

「JOI 2022 Final」星际蛋糕推销

简单题。

「JOI 2022 Final」自学

简单题。

首先 ab\max ,然后二分答案,先贪心上课,看能否补够即可。

「JOI 2022 Final」选举

*贪心,性质优化 \text{dp}

首先很容易观察出如下性质:

然后按照 b 从小到大排序后很容易设计出一个 \text{dp} ,首先枚举最终协作者个数:m

然后设 f_{i,j,k} 表示考虑了前 i 个, 选好了 j 个协作者,另选择了 k 个只拿选票的最优解。转移是容易的。

这样总复杂度是 O(n^4) 的,无法通过。

观察这个 \text{dp} ,打表发现答案关于枚举的 m 是一个 单峰函数,并且似乎有凸性 ,在暴力 \text{dp} 上套一个二分就行了。

复杂度是 O(n^3\log n) 的,常数很小,可以通过。

考虑继续优化,这里需要观察到一个性质:

正确性是很显然的,因为如果一个很小的 b 让他作废的话,那后面还要选 b 的话一定不优了。

这样预处理对于每个后缀 i ,预处理出 g_{i,j} 表示后缀 i 中最小的 ja 之和。

f_{i,j} 表示考虑了前 i 个,有 j 个选 b ,剩下 i-j 个选 a 的最优解,转移同样容易。

统计答案的话枚举那个前缀 i ,贡献就是 f_{i,m}+g_{i+1,k-i} ,做一次 \text{dp}O(n^2) 的。

总复杂度 O(n^3) ,是这道题目的正解。

将优化后的算法套三分。

可以做到更优的复杂度 O(n^2\log n)

「JOI 2022 Final」铁路旅行 2

*倍增,\text{RMQ}

跟前不久的模拟赛题做法一样,考虑倍增,分别预处理出 g_{i,k},f_{i,k} 表示从 i 出发乘坐最多 2^k 次列车 最左 / 最右 分别能到哪里。

枚举答案的时候转移与上面更新类似。 复杂度 [$O(n\log^2 n)$](https://loj.ac/s/1931432) 。 ### [「JOI 2022 Final」沙堡 2](https://loj.ac/p/3666) ***哈希,暴力,扫描线** 首先发现这样一个性质: - 每个点下一步一定是走到周围比其权值小的最大的一个点。 一个矩形合法的充要条件是:除了矩形中最大值以外,其他点的入度均为 $1$ 。 根据边界情况,维护若干哈希数组,用二维前缀和容易 $O(1)$ 判断一个矩形是否合法。 复杂度 $O((nm)^2)$ ,可以通过 $80pts$ 。 之前想得那个哈希判定需要求个矩形最大值,不方便用扫描线。 考虑这样一种特别的哈希方式: 记 $l$ 为周围权值小于其的最大的权值,不存在则 $l=0$ ;$r$ 为周围权值大于其的最小的权值,不存在则 $r=inf$ 。 那么一个点的权值 ```val[i][j] = r < inf ? a[i][j] : inf``` 。那么一个矩形合法的话,中间部分都被消去了,链头权值为 $inf$ ,链尾为 $0$ 。 因此矩形的权值为 $inf$ 则说明这个矩形合法。 如果 $n>m$ 则行列交换。 枚举行的区间,对列做扫描线,对于每个右边界,用 ```map``` 计数合法的左边界。 复杂度 $O(n^2m)$ 乘上一个 ```map``` 的复杂度,是 $O((nm)^{\frac{3}{2}})$ 级别的。[submission](https://loj.ac/s/1932561) 。