P2215 HAOI2007 上公升序列 DP

2022-03-30 07:29:51 字數 776 閱讀 3697

這個字典序海星

先求出每個點往後的的最長上公升子串行。

然後對於每個詢問,若詢問的長度\(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的乙個上公升序列...