2018 ICPC Asia Singapore Regional Contest


链接


Problem A

Solved by Water_sheep. 03:33 (+2)

题意:

  • 给出二维平面上 $N$ 个点的坐标,问你选择三个点使构成的三角形面积最大,输出三角形面积。$1 \le N \le 5000$

题解:

  • 不难证明三个点一定在凸包上,所以可以在凸包上 $O(n^2)$ 枚举两个点,剩下一个点 $two$ $point$,总复杂度 $O(n^2)$。

Problem B

Solved by Robin_Lo. 00:54 (+)

题意:

  • 给一个 $N$ 个点 $M$ 条边的图,病毒可以隔一个点传播,问你最少选择几个点感染病毒使得整个图的点都被病毒感染。$2 \le N, M \le 5 \cdot 10^5$

题解:

  • 一个连通块的传播可以看成是二分图一边的传播,如果不是二分图,那整个连通块一定可以被传播,那么只需要求出连通块数和二分图判定,就能很容易求出答案了。

Problem C

Solved by Water_sheep. 01:20 (+)

题意:

  • 阅读理解。

题解:

  • _(:з)∠)_

Problem D

Upsolved by Water_sheep.

题意:

  • 环上 $N$ 个数,问你如何划分使得每一段内部 $or$ 起来,段与段之间 $and$ 起来最大。$1 \le N \le 5 \cdot 10^5$

题解:

  • 枚举环上起点,可以证明最多只有 $log$ 个不同的有效起点。按位枚举答案,然后扫一遍。复杂度 $O(nlog^2n)$。

Problem E

Unsolved.


Problem F

Solved by Water_sheep. 02:00 (+)

题意:

  • 给出 $N$ 个数,让你选出 $4$ 个形如 $A,B,A,B$ 的数,四个的位置分别为 $1 \le c \le d \le e \le f \le N$,$S_c=S_e$,$S_d=S_f$ 且 $S_c\neq S_d$ 且 $A,B$ 尽可能小。$1 \le N \le 400000$

题解:

  • 首先我们可以把每一个数下一个和他相同的数的位置求出来,作为一个区间,显然这样的区间不超过 $N$ 个,那么我们就是要求出两个严格相交的区间,同时 $A,B$ 尽可能小。要求出严格相交的区间,我们可以用线段树维护一段区间每个数的下一个位置的最大值,只要最大值大于区间右端点,那么这个区间就可以作为答案区间,贪心取值最小的,最后在这个区间 $for$ 一遍求出最小的 $B$。复杂度 $O(nlogn)$。

Problem G

Unsolved.


Problem H

Unsolved.


Problem I

Unsolved.


Problem J

Solved by Robin_Lo. 00:13 (+)

签到题。


Problem K

Upsolved by purple_bro.

题意:

  • 有 $N$ 个点,前 $K$ 个点是生产的,分别在 $x \cdot K + j \quad (j = 1,2…K)$ 的时间生产一个产品,给你 $M$ 个传送带,通过传送带流向下一个点,点与点之间有一条单向的传送带,但是一次传送带上只允许有一个产品,现在让你关掉一些生产点,一些传送带,使得每个点的出度都为 $1$,并且每个传送带在每个时间不会出现两个不同产品,最终把产品送到 $N$ 号点。求最多能留下多少生产点。

题解:

  • 点数较小,考虑把每个点拆成 $K$ 个点表示 $\mod K$ 的时间,加一个超级源点和超级汇点,把 $N$ 号点的 $K$ 个点都向汇点连一条容量为 $inf$ 的边,其他的容量都为 $1$,通过一条传送带连接的两点间,时间 $i$ 向时间 $i + 1$ 连边。源点向生产点连边,跑一个最大流就是答案了。

Problem L

Solved by purple_bro. 00:39 (+)

题意:

  • 求一个数 $n$ 的因子中非质因子个数,$(T \le 3 \cdot 10^6$,$n \le 2 \cdot 10 ^ 6)$。

题解:

  • 线性筛出每个数的最小质因子,这样对每个数质因子分解就是 $log$ 级别的,求出每个质因子的次数就能求出因子个数,减去质因子个数就是答案了,复杂度 $O(Tlogn)$。