這個字典序海星
先求出每個點往後的的最長上公升子串行。
然後對於每個詢問,若詢問的長度\(len>=\)最長的上公升子串行的長度,直接\(impossible\);
否則,我們從第乙個點開始找長度\(>=len\)的點,找到後\(--len\),接著向後找;直到\(len==0\)
#include#include#define ull unsigned long long
#define ll long long
#define r register int
using namespace std;
#define pause (for(r i=1;i<=10000000000;++i))
#define in freopen("noipak++.in","r",stdin)
#define out freopen("out.out","w",stdout)
namespace fread inline bool isempty(const char& ch)
inline void gs(char* s)
} using fread::g; using fread::gs;
namespace luitaryi
while(x&&++p<=n) if(a[p]>lst&&f[p]>=x) --x,printf("%d ",a[p]),lst=a[p];
puts("");
}}}signed main()
2019.07.22 HAOI2007 上公升序列
最長上公升子串行有兩種遞推方式。1 f i 表示以第 i 個數結尾的最長上公升子串行長度。2 f i 表示以第 i 個數開始的最長上公升子串行長度。對於本題,要特別注意對字典序最小的規定。我一開始以為是得到的數字序列的字典序最小,還記錄了前驅和一大堆東西,然而全wa了。後來才發現字典序最小是對應的下...
洛谷2215 HNOI2007 上公升序列
對於乙個給定的s 若有p 滿足 x1輸入輸出格式 輸入格式 第一行乙個n,表示序列一共有n個元素第二行n個數,為a1,a2,an第三行乙個m,表示詢問次數。下面接m行每行乙個數l,表示要詢問長度為l的上公升序列。輸出格式 對於每個詢問,如果對應的序列存在,則輸出,否則列印impossible.輸入輸...
1046 HAOI2007 上公升序列
time limit 10 sec memory limit 162 mb submit 4187 solved 1429 submit status discuss description 對於乙個給定的s 若有p 滿足 x1 x2 xm 且 ax1 ax2 axm 那麼就稱p為s的乙個上公升序列...