zoukankan      html  css  js  c++  java
  • CF538G (套路题)

    CF538G

    题目大意

    你有一个长度为(l)的指令序列,每个指令为向上,向下,向左,向右中的一种。

    机器人会循环执行该序列,即,执行完第(l)个指令后,就会重新开始执行第一个指令。

    现在,给你(n)个信息,每个信息为:在第(t)秒时,机器人所处的位置((x,y))

    请求出一个合法的序列,如无解,则输出(No)

    (nle2*10^5 lle2*10^6)

    解题历程

    一开始,真的很自闭,二维的太难考虑了。

    去翻题解,题解第一行说,这样的位移可以等价于每秒独立地在(x+y)(x-y)方向上(+1)(-1)

    豁然开朗。

    于是,现在只需要考虑一维的情况了。

    我们发现,它循环多次,又剩余一点。

    我们就考虑这多出的一点,令:

    (t=p*l+q)

    若我们假设整个序列在当前方向上的位移为(x)(q)内的位移为(f(q,x)),(t)内的位移为(sum)

    (f(q,x)=sum-px)

    我们把所有的信息按(q)排序,那么,需满足以下限制

    [|f(q_i,x)-f(q_{i+1},x)|le q_{i+1}-q_i ]

    然后,解方程,找出值域内的任意(x),再带回去算即可

    注:可能需要考虑以下奇偶性的问题

    代码

    由于我是口胡选手,所以就先咕着。

  • 相关阅读:
    11.29
    11.28
    11.24
    11.21
    11.17
    11.15
    11.14
    11.9
    11.5
    11.3
  • 原文地址:https://www.cnblogs.com/river-flows-in-you/p/11823005.html
Copyright © 2011-2022 走看看