BZOJ3688 折線統計(dp bit優化)

2021-07-26 13:17:08 字數 1047 閱讀 8562

傳送門n2

k 的dp是比較好想好寫的

f(i,j,0/1)表示劃分了i段,以第j個結尾,最後一段是上公升0\下降1的方案數 f(

i,j,

0)=∑

k=i+

1j−1

∑y(k

)j)f(

i,k,

0)+∑

k=i+

1j−1

∑y(k

)>y(

j)f(

i−1,

k,1)

f(i,j,1

)=∑k

=i+1

j−1∑

y(k)

j)f(

i−1,

k,0)

+∑k=

i+1j

−1∑y

(k)>y(

j)f(

i,k,

1)兩個限制條件,第乙個邊做邊維護,第二個用bit維護字首和,01分開維護,滾動陣列

然後就是o(

nlog

n)了

#include

#include

#include

#include

#include

using

namespace

std;

#define mod 100007

#define n 50005

#define inf 100000

int n,k,ans;

struct datap[n];

int f[15][n][2],c[2][2][inf+5];

int cmp(data a,data b)

int query(int loc,int id,int jd)

int main()

for (int i=1;i<=k;++i)

}for (int i=1;i<=n;++i) ans=(ans+f[k][i][0]+f[k][i][1])%mod;

printf("%d\n",ans);

}

bzoj3688 折線統計

time limit 10 sec memory limit 256 mb submit 119 solved 66 submit status discuss 二維平面上有n個點 xi,yi 現在這些點中取若干點構成乙個集合s,對它們按照x座標排序,順次連線,將會構成一些連續上公升 下降的折線,設...

BZOJ3688 折線統計

portal time limit 10 sec memory limit 256 mb 二維平面上有n個點 xi,yi 現在這些點中取若干點構成乙個集合s,對它們按照x座標排序,順次連線,將會構成一些連續上公升 下降的折線,設其數量為f s 如下圖中,1 2,2 3,3 5,5 6 數字為下圖中從...

bzoj3688 折線統計

二維平面上有n個點 xi,yi 現在這些點中取若干點構成乙個集合s,對它們按照x座標排序,順次連線,將會構成一些連續上公升 下降的折線,設其數量為f s 如下圖中,1 2,2 3,3 5,5 6 數字為下圖中從左到右的點編號 將折線分為了4部分,每部分連續上公升 下降。現給定k,求滿足f s k的s...