免費餡餅 逆向dp

2021-10-10 04:33:18 字數 1566 閱讀 6444

傳送門

給你n個餡餅,之後給出n個餡餅掉落時間和位置。一共有11個位置從 0 ~ 10,這人初始在第5個位置,讓後每一秒最多能移動乙個單位,問這個人能最多能拿多少餡餅。

思路:有點像數字三角形,但是需要逆著推,保證沒有後效性,最後f[0][5]就是答案。

//#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define x first

#define y second

#define l (u<<1)

#define r (u<<1|1)

#define pb push_back

#define mk make_pair

#define mid (tr[u].l+tr[u].r>>1)

#define len(u) (tr[u].r-tr[u].l+1)

#define random(a,b) ((a)+rand()%((b)-(a)+1))

#define db puts("---")

using

namespace std;

void

rd_cre()

void

rd_ac()

void

rd_wa()

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

const

int n=

100010

,mod=

1e9+

7,inf=

0x3f3f3f3f

;const

double eps=

1e-6

;int n,x,t;

int f[n][11

];intmain()

for(

int i=mx;i>=

0;i--

)for

(int j=

0;j<=

10;j++

) f[i]

[j]+

=max

(f[i+1]

[j],

max(f[i+1]

[max

(j-1,0

)],f[i+1]

[min

(j+1,10

)]))

;printf

("%d\n"

,f[0][

5]);

}return0;

}/**/

免費餡餅 (dp)

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...

免費餡餅(DP)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不 掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gamebo...

免費餡餅 (dp)

都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10公尺範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接...