zoukankan      html  css  js  c++  java
  • 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)个一块,容易证明每一块没有两个相同的。

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

  • 相关阅读:
    面试题:链表倒数第k个节点
    面试题:重建二叉树
    面试题:从尾到头打印链表
    面试题:第一个出现的字符位置
    面试题:调整数组顺序
    面试题:有限制条件的求和
    面试题:Fibonacci数列
    面试题:旋转数组的最小数字
    面试题:替换空格
    EndNote8破解版下载安装
  • 原文地址:https://www.cnblogs.com/Grice/p/14700348.html
Copyright © 2011-2022 走看看