對於乙個給定的s=,若有p=,滿足(x1輸入輸出格式
輸入格式:
第一行乙個n,表示序列一共有n個元素第二行n個數,為a1,a2,…,an第三行乙個m,表示詢問次數。下面接m行每行乙個數l,表示要詢問長度為l的上公升序列。
輸出格式:
對於每個詢問,如果對應的序列存在,則輸出,否則列印impossible.
輸入輸出樣例
輸入樣例#1:
63 4 1 2 3 636
45
輸出樣例#1:
impossible1 2 3 6
impossible
資料範圍 n<=10000 m<=1000
題解
由於資料範圍是10000,所以n^2的求lis不行了,可以用樹狀陣列優化,但這題有m次詢問,所以和以前的樹狀陣列求lis不同,這次f[i]表示以i為開頭的lis長度(由於是字典序最小(標號)),發現樹狀陣列不能求了,因為這次求的是比它大的max,用了乙個小技巧,把樹狀陣列倒過來,i這個數的位置變成了n-i+1,這樣大的數就到了前面,而小的數到了後面,這樣就可以求字首max了(非常巧妙)。
#include#include#include#includeusing namespace std;
const int maxn=10010;
int n,m,k,a[maxn],b[maxn],c[maxn],ans[maxn],num;
int t[maxn],f[maxn];
int lowbit(int x)
void add(int x,int y)
int find(int x)
int main()
sort(b+1,b+n+1);
num=unique(b+1,b+n+1)-b-1;
for(int i=1;i<=n;i++)
/* for(int i=1;i<=n;i++)
cout<=1;i--)
scanf("%d",&m);
for(int i=1;i<=m;i++)
else
}printf("\n");
} }return 0;
}
洛谷 P3188 HNOI2007 夢幻島寶珠
題目描述 給你n顆寶石,每顆寶石都有重量和價值。要你從這些寶石中選取一些寶石,保證總重量不超過w,且總價值最大為 並輸出最大的總價值。資料範圍 n 100 w 2 30 並且保證每顆寶石的重量符合a 2 b a 10 b 30 輸入格式 輸入檔案中包含多組資料。每組資料的格式如下 第一行是兩個正整數...
洛谷 P3188 HNOI2007 夢幻島寶珠
給你n顆寶石,每顆寶石都有重量和價值。要你從這些寶石中選取一些寶石,保證總重量不超過w,且總價值最大為 並輸出最大的總價值。資料範圍 n 100 w 2 30,並且保證每顆寶石的重量符合a 2 b a 10 b 30 輸入檔案中包含多組資料。每組資料的格式如下 第一行是兩個正整數n和w,1 n 10...
洛谷 P2007 魔方
常神牛從來沒接觸過魔方,所以他要借助計算機來玩。即使是這樣,他還是很菜。常神牛家的魔方都是3 3 3的三階魔方,大家都見過。更正 3 4以圖為準。作為一名菜鳥,常神牛從網上搜了一篇攻略,並找人翻譯成了他自己會做的方法。現在告訴你他的魔方情況,以及他從網上搜到的攻略,請你求出最後魔方變成什麼樣子。輸入...