Difference between revisions of "XX Open Cup named after E.V. Pankratiev. Grand Prix of Korea, Division 1."
Line 68: | Line 68: | ||
Upsolved by Kilo_5723. | Upsolved by Kilo_5723. | ||
+ | |||
+ | 题意:给出 $n$ 个区间,每个区间有权值,区间之间只可能互相包含或者不相交,对于 $1 \sim n$ 中的每个 $k$,选出权值最大的区间集,使得每一个位置至多被 $k$ 个区间覆盖。 | ||
+ | |||
+ | 题解:由于区间之间不存在相交的情况,因此可以将区间改写成树的形式,其中父节点的区间包含子节点的区间。 | ||
+ | |||
+ | 我们可以对每棵子树维护一个降序序列,表示新增一次区间覆盖能增加的最大权值。显然兄弟节点的区间可以将对应位置相加,而父子节点相当于把父节点的权值插入全部子节点对应序列相加之后的序列。 | ||
+ | |||
+ | 新增一个超级父节点,其孩子为所有没有父节点的节点,用优先队列维护序列并启发式合并,超级父节点的序列就是答案序列的差分。 | ||
== Problem K == | == Problem K == | ||
Unsolved. | Unsolved. |
Revision as of 02:41, 17 February 2020
Problem A
Solved by Kilo_5723. 00:14 (+)
题意:给出一个仅含 $6,7,8,9$ 数字的矩阵,求出要使矩阵中心对成,需要将多少个数字旋转 $180^\circ$。
题解:找到每个数的对称位置,判断旋转多少次能让这两个位置中心对称。特判中心位置,如果不是 $8$ 就无解。
Problem B
Unsolved.
Problem C
Unsolved.
Problem D
Unsolved.
Problem E
Unsolved.
Problem F
Solved by Xiejiadong. 04:40 (+10)
题意:每次有新的团队入住的时候,有两种情况:
- 住客有无数个,那么所有住在 $x$ 房间的人移到 $2x$ ,新来的在奇数房间入住;
- 住客有 $k$ 个,所有人向后挪出 $k$ 个空房间。
现在要求每个团队里某一个人在的房间以及房间里的人属于的团队。
题解:对于每个团队里的人可以发现所有人的间隔是相同的。
而对于无数个人输入,相当于间隔 *2 ,其实坐标 *2 (起始坐标是 $0$ 的话不变)。
对于询问房间里的人属于的团队,我们可以用无穷多的次数将团队分割开来。
这样对于分割开来的每一部分有限人数的团队一定在最开头部分,可以通过前缀和二分得到。如果属于后半部分的房间:
- 是奇数房间,一定是无穷的那个团队的;
- 否则编号一定 *2 了,那么 /2 继续做这个问题。
显然最多只需要做这样的 $30$ 次。
需要特别处理 $0$ 号房间的问题。
Problem G
Solved by Kilo_5723. 00:42 (+)
题意:给出一张有向带权图,边权不会重复,求出起点到终点字典序最小的路径。
题解:去除图中所有无法到达终点的点之后从起点出发,每次贪心走边权最小的边就是正解。如果走到了已经经过的点,说明路径无限长。
Problem H
Solved by Weaver_zhu. 00:28 (+)
Problem I
Unsolved.
Problem J
Upsolved by Kilo_5723.
题意:给出 $n$ 个区间,每个区间有权值,区间之间只可能互相包含或者不相交,对于 $1 \sim n$ 中的每个 $k$,选出权值最大的区间集,使得每一个位置至多被 $k$ 个区间覆盖。
题解:由于区间之间不存在相交的情况,因此可以将区间改写成树的形式,其中父节点的区间包含子节点的区间。
我们可以对每棵子树维护一个降序序列,表示新增一次区间覆盖能增加的最大权值。显然兄弟节点的区间可以将对应位置相加,而父子节点相当于把父节点的权值插入全部子节点对应序列相加之后的序列。
新增一个超级父节点,其孩子为所有没有父节点的节点,用优先队列维护序列并启发式合并,超级父节点的序列就是答案序列的差分。
Problem K
Unsolved.