HDU-5532Almost Sorted Array LIS问题
生活随笔
收集整理的這篇文章主要介紹了
HDU-5532Almost Sorted Array LIS问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意
就是檢查這個序列是否刪除一個元素就能變成非嚴格的有序序列 表面上就是一個卡條件檢查數組的問題
分析:
在向量中upperbound插入上界
這樣能夠使數組里的數列長度盡可能大
因為 我們是在不斷用小數替換數列中的數
大的數直接拼接到最后
code
#include<bits/stdc++.h> #define rep(i,a,b) for(int (i) = (a);(i)<=(b);(i)++) #define rrep(i,a,b) for(int (i) = (a);(i)>=(b);(i)--) using namespace std; typedef long long ll; int a[100005],b[100005]; int main() {int t;scanf("%d",&t);while(t--){int n,S=1,NS=1;scanf("%d",&n);rep(i,1,n)scanf("%d",a+i);vector<int>s;s.clear();s.push_back(a[1]);rep(i,2,n){if(a[i]>=s[s.size()-1])s.push_back(a[i]);else{int pos = upper_bound(s.begin(),s.end(),a[i])-s.begin();s[pos]=a[i];}}S = (int)s.size();s.clear();s.push_back(a[n]);rrep(i,n-1,1){if(a[i]>=s[s.size()-1])s.push_back(a[i]);else{int pos = upper_bound(s.begin(),s.end(),a[i])-s.begin();s[pos]=a[i];}}NS =(int)s.size();if(NS>=n-1||S>=n-1)puts("YES");else puts("NO");}return 0; }總結
以上是生活随笔為你收集整理的HDU-5532Almost Sorted Array LIS问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL5.6主从复制搭建基于日志(b
- 下一篇: 修正discuz发帖首次换行无效的问题