陶陶 摘蘋果 動態規劃

2022-05-20 05:54:36 字數 1922 閱讀 9324

陶陶摘

蘋果陶陶

摘蘋果

desc

ript

iond

escr

ipti

onso

luti

onso

luti

on問題轉化: 數軸上

有若干點

,從m個

固定區間

中選出k

個,要求

覆蓋點數

最多.數

軸上有若

幹點,從

m個固定

區間中選

出k個,

要求覆蓋

點數最多

.然後排序進行 dpd

p,f[

i,j]

f[i,

j]表示第 i

i 個區間作為選出的 j

j 個區間中的最後乙個時, 覆蓋的最大點數.

則 f[i,

j]=m

axf[

i,j]

=max

.時間複雜度 o(m

3)o(

m3) .

注意狀態的初始化繼承,繼承不要在決策途中進行.

cod

ecod

e

#include

#define reg register

const

int maxn =

1000005

;const

int maxn_2 =

205;

//}}

struct inte p[maxn]

, t[maxn]

;bool

cmp(inte a, inte b)

intmain()

for(reg int i =

1; i <= m; i ++

)scanf

("%d%d"

,&p[i]

.l,&p[i]

.r);

for(reg int i =

1; i < maxn; i ++

) sum[i]

+= sum[i-1]

; std::

sort

(p+1

, p+m+

1, cmp)

;for

(reg int i =

1; i <= m; i ++)

k = std::

min(k, cnt)

;for

(reg int j =

1; j <= k; j ++

)for

(reg int i =

1; i <= cnt; i ++

)for

(reg int k =

0; k < i; k ++

) f[i]

[j]= std::

max(f[i]

[j], f[k]

[j-1

]+ sum[t[i]

.r]- sum[std::

max(t[k]

.r, t[i]

.l-1)]

);for(reg int i =

1; i <= cnt; i ++

) ans = std::

max(ans, f[i]

[k])

;printf

("%d\n"

, ans + flag)

;return0;

}

陶陶 摘蘋果 動態規劃

陶陶摘 蘋果陶陶摘蘋果 陶陶摘蘋果 on問題轉化 數軸上 有若干點 從m個 固定區間 中選出k 個,要求 覆蓋點數 最多.數軸上有若干點,從m個固定區間中選出k個,要求覆蓋點數最多.數軸上有若干 點,從m 個固定區 間中選出 k個,要 求覆蓋點 數最多.然後排序進行 dpdp dp,f i j f ...

陶陶摘蘋果

試題描述 陶陶家的院子裡有一棵蘋果樹,每到秋天樹上就會結出10個蘋果。蘋果成熟的時候,陶陶就會跑去摘蘋果。陶陶有個30厘公尺高的板凳,當她不能直接用手摘到蘋果的時候,就會踩到板凳上再試試。現在已知10個蘋果到地面的高度,以及陶陶把手伸直的時候能夠達到的最大高度,請幫陶陶算一下她能夠摘到的蘋果的數目。...

陶陶摘蘋果

陶陶家的院子裡有一棵蘋果樹,每到秋天樹上就會結出10個蘋果。蘋果成熟的時候,陶陶就會跑去摘蘋果。陶陶有個30厘公尺高的板凳,當她不能直接用手摘到蘋果的時候,就會踩到板凳上再試試。現在已知10個蘋果到地面的高度,以及陶陶把手伸直的時候能夠達到的最大高度,請幫陶陶算一下她能夠摘到的蘋果的數目。假設她碰到...