Codeforces #333 div2

代码:

https://github.com/HarryGuo2012/ACMCode/tree/worldLine/Codeforces/%23333(Div%202)


Two Bases

题意:

给你两个不同进制的数,让你比较大小。

题解:

直接转换到十进制比较就好。


Approximating a Constant Range

题意:

给你一个序列,这个序列中相邻的元素之间的差值不超过1,求一个最长的子串,使得这个子串中最大值和最小值的差不超过1。

题解:

直接用两个指针$i,j,i\le j$表示这个串的头尾,向后扫如果$j$的位置大于$[i,j]$中的最小值加一,就让$i$跳着往前走就好,如果小于区间最大值减一,也让$i$跳着往前跳。整个过程维护两个RMQ表就好,不过这道题也可以dp。


The Two Routes

题意:

有个完全图,边权都是1,部分边是公路,部分是铁路,现在火车和汽车同时从1号节点出发前往n号节点,中途不能同时在一个节点相遇,可以在n号节点等另外一个交通工具,现在问你最短时间,使得两个交通工具都在n号节点。

题解:

这里有个巧妙地地方,由于边权都是1,并且是完全图,由三角形不等式,两个交通工具绝对无法相遇。所以直接spfa两边就好。


Lipshitz Sequence

题意:

给你个序列,每次询问时$[L,R]$内所有的连续序列的利普希茨常数的和。

题解:

此题做法非常的巧妙,首先我们来想想这样一个问题,对于一个连续函数$f(x)$而言,在区间$[L,R]$中是否一定存在一个斜率的绝对值$|k|$,使得$|k|\ge L,R的连线$?仔细想想后发现这是一定存在的,所以在离散域中,利普希茨常数一定存在与相邻的元素。所以直接维护一个RMQ,然后再二分就好。详见代码。