Samara Farewell Contest 2020

简单场...讲讲不会做的题。
ps:没看懂( ext{N})的题意...

A

题意:
一天有(m)个小时:([0,m])
(n)个工人,工作时间为([a_i,b_i](a_i< b_i)),现在新加入一个工人,这个公司有个规定,希望每个人工作时间不少于(K)
但他们检查工人是否符合条件,是通过监督机制,具体而言,若一个工人工作时间为([x,y]),仅发生以下情况时,视为不符合条件:
(1)(y-x< K)(exists i)( ext{s.t.} a_ile x < yle b_i)。换言之,有工人亲眼目睹其工作时长(< K)
(2)(y < K)(exists i)( ext{s.t.} x< a_ile yle b_i)
(3)(x>m-K)(exists i)( ext{s.t.} a_ile xle b_i < y)
(4)(exists i)( ext{s.t.} a_ile K,b_ige m-K)(y<a_i~ ext{or}~b_i<x)

这种题居然没做出来...

((x,y)(xle y))看作二维平面上的点,将非法的部分并起来,然后求合法的((x,y)(y-x))最小。

(2)(3)(4)的部分是矩形,但(1)的部分是个梯形这样的东西。
关键的一步是(1)是限制(y-x< K)的,我们直接将([a_i,b_i] imes [a_i,b_i])直接视为不合法。初始化答案为(K)

将可能的关键点拉出来离散化,然后矩阵并(O(nlog n))

H

直接看这篇博客

I

题意:
(n)个人,(K)台电脑,(n)个人两两之间都要使用一台电脑对决过,问最少多少轮,并输出方案。
两个人使用同一台电脑,一轮中同一个人不能使用过两台电脑。

考虑(K=frac{n}{2})的方案:初始时将(n)个人排成任意序列(a_{1},ldots,a_{n/2},b_1ldots,b_{n/2})。(若(n)是偶数则末尾补一个虚节点)
第一轮(a_i ext{vs} ~b_{i})
之后的每一轮,固定(a_1)(b_1,ldots,b_{n/2},a_{n/2},ldots,a_2)顺时针移动一步,即((a_1 ext{vs} ~a_2),(a_3 ext{vs}~b_1),ldots (a_{n/2} ext{vs}~b_{n/2-2}),(b_{n/2} ext{vs}~b_{n/2-1}))

将每一轮有效的依次拼起来
对于(Kle frac{n}{2}),每(K)个一块,容易证明每一块没有两个相同的。

讲得不太清楚,可以看下代码

原文地址:https://www.cnblogs.com/Grice/p/14700348.html