zoukankan      html  css  js  c++  java
  • ARC120E

    题意

    每个人所在位置为(a_i)(a_i< a_{i+1})(a_i)均为奇数),每秒每个人可以选择往左或往右最多一定(1)的距离,问最少最长时间内,对于每个(i< n),满足存在一个时刻(i,i+1)两个人位于同一位置。
    (nle 2e5,a_ile 1e9)

    做法

    显然,可以令每个人的决策为两种:
    (1)开始往左走,在碰到左边的人之后往右一直走。
    (2)开始往右走,在碰到右边的人之后往左一直走。

    令第一种方式为(L),第二种为(R)

    定义1:若对于(i,i+1)(i)(i+1)第一个遇到的人,(i+1)也是(i)第一个遇到的人,称(i)(i+1)匹配

    那么(n)个人有(n-1)种可能匹配。

    引理1:存在最优解,使得不会有连续(3)种匹配不出现,即不会出现(i-1,i,i+1,i+2),中间的三种匹配都失效。

    证明:
    (i-1)(R),则(i,i+1,i+2)均为(R),显然将(i,i+1)调整成(R,L)不会影响答案。
    (i+2)(L),则同理。
    现在假设(i-1,i+2)分别为(L,R)

    对于他们的路径,
    (i,i+1)分别为(L,L),则(i+1,i+2)会在蓝色节点相遇;
    (i,i+1)分别为(L,R),则(i,i+1)会在蓝色节点相遇;
    (i,i+1)分别为(R,R),则(i-1,i)会在蓝色节点相遇。
    故若将(i,i+1)改为(R,L),不会使答案变劣。

    推论1:不会出现连续四个位置为同一个选择。

    考虑对于一种方案,一个段表示极长的,选择相同的,一大段表示两个(R,L)的相邻段。
    对于一个大段([R]...[R][L]...[L]),另这四个关键点的位置分别为(x_1,x_2,x_3,x_4),其时间显然为(max(frac{x_3-x_1}{2},frac{a_4-a_2}{2}));而对于两个相邻的大段,令另一个段四个关键点分别为(y_1,y_2,y_3,y_4),则其时间显然为(frac{y_3-x_2}{2})

    (f_{i,j})为:(i)(L),上一个(R)的位置为(j)的最少时间。转移枚举上一个大段的结尾。
    根据推论1(j)的个数为常数个,转移的个数也为常数个,故总复杂度为(O(n))

  • 相关阅读:
    2020软件工程作业00
    2020软件工程作业03
    2020软件工程作业02
    软件工程作业01
    2020软件工程作业06
    2020软件工程作业05
    问题清单
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业1
  • 原文地址:https://www.cnblogs.com/Grice/p/14828175.html
Copyright © 2011-2022 走看看