题目大意:求将一个串分成三段再反转后字典序最小。
题目思路:由于题目中说第一个数最大,所以第一切点只要找到最小后缀就可以了,对于剩下的部分,我想到的办法很麻烦,还要求最长公共前缀,分三段比较。网上的方法是将剩余串增倍,因为其实反转后两个串构成一个循环,用加倍的方法可以避免讨论,这样就可以直接用rank比较了。
方法一:
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include