Jzoj4891 摆书
生活随笔
收集整理的這篇文章主要介紹了
Jzoj4891 摆书
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
十分套路,一看應(yīng)該就是LIS相關(guān)的題目了
我們發(fā)現(xiàn),操作只能將數(shù)字放在數(shù)列頭,所以考慮一本書i,若有j使得j<i而且s[j]>s[i],那i肯定要被抽出來
所以,答案應(yīng)該是結(jié)尾為n的LIS長度,這個就搞一個rank數(shù)組就好了;
找到最小的k使得對于i>=k都滿足rank[i]>rank[i-1],那么k-1就是答案
#include<stdio.h> #include<string.h> #include<algorithm> #define N 100010 using namespace std; int s[N],r[N],n,T; int Extended_Ash(){scanf("%d",&n);for(int i=1;i<=n;++i) scanf("%d",s+i),r[s[i]]=i;for(int i=--n;i;--i) if(r[i+1]>r[i]) --n; else break;printf("%d\n",n); } int main(){freopen("book.in","r",stdin);freopen("book.out","w",stdout);for(scanf("%d",&T);T--;Extended_Ash()); }
轉(zhuǎn)載于:https://www.cnblogs.com/Extended-Ash/p/9477251.html
總結(jié)
以上是生活随笔為你收集整理的Jzoj4891 摆书的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue做购物车
- 下一篇: stm32之RCC寄存器学习