题目链接:https://vjudge.net/problem/UVA-1392
题目大意:给你两个长度为n的序列,n<=150000,要求在这两个序列的对应位置找出最长的子序列,满足这两端子序列中不同的字母所占比例小于p%。
思路:记cnt[i],表示从1到位置i,两端序列不同元素的个数。假设满足条件的子序列开始与结束位置分别为a,b(a<b,对于a==b情况可以采用特判,虽然我写的时候没考虑),则满足,经过整理可得
对任意a<b,,
记,则对某个位置x,判断在它前面距离至少为len远处是否有大于它的值即可,这可以通过维护最大值数组实现。因此,通过二分长度len,在