終於有會做的題了。。。
一開始想用正常的lis ,然後從前往後掃,
由於最優查詢區間在序列上是按順序單調遞增的,所以想記錄每個點取哪個值跳到哪,這樣是n*m logn的
然後發現既然是單調遞增的那直接掃不就可以了,,如果乙個點能往後取到大於等於查詢值的,就直接把他加上
然後相當於詢問每個點能往後最多延伸幾個點,然後就是反著的lis
碼:#include#includeusing namespace std;
int n,m,a[10005],ans[10005],f[10005],i,j,xin[10005],shang[10005];
int main()} }
scanf("%d",&m);
for(i=1;i<=m;i++)
{ int x,lin2=-1,lin;
scanf("%d",&x);
lin=x;
for(j=1;j<=n;j++)
{ //cout<=lin&&lin2
上公升子串行
題目描述 乙個只包含非負整數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 i1 i2 ik n。例如 對於序列,有它的一些上公升子串行,如,等等。這些子串行中序列和最大的是子串行,它的所有元素的和為18。對於給定的乙個序列...
上公升子串行
time limit 1000ms memory limit 65536k 乙個只包含非負整數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 i1 i2 ik n。例如 對於序列,有它的一些上公升子串行,如,等等。這些子串行...
上公升子串行
submit statistic problem description 乙個只包含非負整數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列,我們可以得到一些上公升的子串行,這裡1 i1 i2 ik n。例如 對於序列,有它的一些上公升子串行,如,等等。這些子串行中...