国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

uva 10534 Wavio Sequence (LIS)

2019-11-06 06:25:06
字體:
來源:轉載
供稿:網友

題意:

找一個最長(假設長度為2N-1)的子序列,使得前N個元素遞增,后N個元素遞減。

思路:

用nlogn的方法首尾各求一遍LIS,然后枚舉中點就可以了。

注意要求中點兩邊一樣長。

代碼:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1e5+5;int n, a[maxn], b[maxn], dp1[maxn], dp2[maxn];int main(void){    while(cin >> n)    {        for(int i = 1; i <= n; i++)            scanf("%d", &a[i]);        int len = 1, l, r;        b[1] = a[1];        for(int i = 1; i <= n; i++)        {            l = 1, r = len;            while(l <= r)            {                int mid = (l+r)/2;                if(b[mid] < a[i]) l = mid+1;                else r = mid-1;            }            b[l] = a[i];            dp1[i] = l;            if(l > len) len++;        }        b[1] = a[n];        len = 1;        for(int i = n; i >= 1; i--)        {            l = 1, r = len;            while(l <= r)            {                int mid = (l+r)/2;                if(b[mid] < a[i]) l = mid+1;                else r = mid-1;            }            b[l] = a[i];            dp2[i] = l;            if(l > len) len++;        }        int ans = 0;        for(int i = 1; i <= n; i++)            if(min(dp1[i], dp2[i])*2-1 > ans)                ans = min(dp1[i], dp2[i])*2-1;        PRintf("%d/n", ans);    }    return 0;}


上一篇:交換排序算法

下一篇:四、GC算法實現

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 当阳市| 电白县| 宿州市| 宜都市| 楚雄市| 邵阳县| 泰顺县| 营山县| 耿马| 登封市| 高州市| 大姚县| 杭州市| 丹东市| 大宁县| 台东县| 高阳县| 巴塘县| 博乐市| 屏山县| 荆州市| 张家川| 丹东市| 泰来县| 谢通门县| 紫阳县| 东港市| 湖州市| 桓台县| 兴化市| 利辛县| 邵阳县| 罗江县| 高邑县| 寻乌县| 哈尔滨市| 苗栗县| 绥中县| 台北市| 东乡| 叶城县|