zoukankan      html  css  js  c++  java
  • arc120e 1d party

    某些题解能不能写的清楚一点啊。。

    首先容易发现一个性质:每个人肯定是全速走,发生一次碰撞以后拐弯去碰另一个。然后就得到了(O(nlog V))的做法。

    可是这没有arc的b格!还需要想线性做法。

    首先考虑不合法的情况。什么时候一个人往右走,一直碰不到右边的点?肯定右边的点也在往右走,右边的点的右边也在往右走,右边的点的右边的右边也在往右走,他右边的所有点都是往右走的。

    那我们强制1往右走,n往左走,就一定合法了。

    当然上面只是一些准备工作。有一个重要的想法,就是把拐弯看成穿透。

    现在问题变成了什么样呢?初始时刻给所有人规定一个方向,他一直朝这个方向走。每次A撞上B,如果B的另一边没有相遇,A就继续走,否则A停下。

    好像还是没法做?

    我们可以把这n个点分成若干RRRRRRRLLLLLL这样的段。考虑如何统计答案。对于段内,肯定是最后一个R和所有L相撞,第一个L和所有R相撞,最终只有最后一个R还在走,别的人都停了。

    (p)数组记录所有第一个L的位置,答案就是(maxfrac{ a_{p_i}-a_{p_{i-1}-1}}{2})

    又发现一个性质,不存在LLL,RRR这样的子串。于是我们切掉了arc的e题!

    代码

  • 相关阅读:
    C++解析XML
    C/C++获取CPU等硬件信息&&屏幕截图
    C/C++使用Socket通信UDP
    C/C++远程开机
    通过匿名管道获取CMD运行结果
    管道同步通信
    VS2013入门驱动配置测试
    仿LordPE获取PE结构
    ossutil64 替换 lrzsz 方法
    shell perl 等
  • 原文地址:https://www.cnblogs.com/happyguy/p/14922678.html
Copyright © 2011-2022 走看看