time limit: 10 sec
memory limit: 162 mb
submit: 4898
solved: 1704 [
submit][
status][
discuss]
對於乙個給定的s=,若有p=,滿足(x1 < x2 < … < xm)且( ax1 < ax
2 < … < axm)。那麼就稱p為s的乙個上公升序列。如果有多個p滿足條件,那麼我們想求字典序最小的那個。任務給
出s序列,給出若干詢問。對於第i個詢問,求出長度為li的上公升序列,如有多個,求出字典序最小的那個(即首先
x1最小,如果不唯一,再看x2最小……),如果不存在長度為li的上公升序列,則列印impossible.
第一行乙個n,表示序列一共有n個元素第二行n個數,為a1,a2,…,an 第三行乙個m,表示詢問次數。下面接m
行每行乙個數l,表示要詢問長度為l的上公升序列。n<=10000,m<=1000
對於每個詢問,如果對應的序列存在,則輸出,否則列印impossible.
63 4 1 2 3 636
45impossible
1 2 3 6
impossible
從後往前求一發最長下降子串行即可(dp[i]:從後往前以第i個數結尾的最長遞減序列)
題目保證輸出字典序最小,
呢每遇到乙個符合條件的數(也就是當前的dp值大於等於當前要輸出的長度),
輸出即可
#include#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
#define maxn 10005
int dp[maxn],a[maxn];
int main(void)
for(i=1;i<=n;i++)
}printf("\n");
} return 0;
}
BZOJ 1046 上公升序列 HAOI2007
和字典序有關的題型啊。對於乙個給定的s 若有p 滿足 x1 x2 xm 且 ax1 ax2 axm 那麼就稱p為s的乙個上公升序列。如果有多個p滿足條件,那麼我們想求字典序最小的那個。任務給出s序列,給出若干詢問。對於第i個詢問,求出長度為li的上公升序列,如有多個,求出字典序最小的那個 即首先x1...
BZOJ1046 上公升序列(動態規劃,貪心)
bzoj 洛谷我一開始看錯題了,一度以為是字典序最小的序列。最後發現它要求的字典序是位置的字典序最小。那就很好辦了。設f i f i 表示以 i i 開頭的li s role presentation lis lis長度,用bi t bit 轉移。然後每次詢問暴力貪心即可。include inclu...
BZOJ 1046 HAOI 上公升序列
1046 haoi2007 上公升序列 time limit 10 sec memory limit 162 mbsubmit 5376 solved 1862 submit status discuss description 對於乙個給定的s 若有p 滿足 x1 x2 xm 且 ax1 2 出s...