hdu 1176 免費餡餅 dp

2021-07-30 23:58:38 字數 1777 閱讀 9134

題目鏈結

思路:

本人也是剛接觸dp,所以這個題用了兩種方法,但是一種方法當時發現測試資料好像有點水,我自己舉了乙個樣例不對竟然給我ac了 然後又自己改了一下...

像這樣起點位置確定了而末位置不確定的我們從後往前倒著dp,這樣以便確定最優解,

轉移方程為 dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1]));   處理好邊界

#include#define ri(a) scanf("%d", &a)

#define rl(a) scanf("%lld", &a)

#define rf(a) scanf("%lf", &a)

#define rs(a) scanf("%s", a)

#define pi(a) printf("%d\n", (a))

#define pf(a) printf("%lf\n", (a))

#define pl(a) printf("%lld\n", (a))

#define ps(a) printf("%s\n", (a))

#define w(a) while(a--)

#define clr(a, b) memset(a, (b), sizeof(a))

#define mod 100000007

using namespace std;

typedef long long ll;

const int maxn=1e5+10;

int dp[maxn][20];

int n,pos,t;

int maxt;

int main()

for(int i=maxt-1;i>=0;i--)

}pi(dp[0][5]);

} return 0;

}

如果從起始位置開始的話需要注意由於剛開始只能從5這個起點開始,需要特別處理一下;

#include#define ri(a) scanf("%d", &a)

#define rl(a) scanf("%lld", &a)

#define rf(a) scanf("%lf", &a)

#define rs(a) scanf("%s", a)

#define pi(a) printf("%d\n", (a))

#define pf(a) printf("%lf\n", (a))

#define pl(a) printf("%lld\n", (a))

#define ps(a) printf("%s\n", (a))

#define w(a) while(a--)

#define clr(a, b) memset(a, (b), sizeof(a))

#define mod 100000007

using namespace std;

typedef long long ll;

const int maxn=1e5+10;

int dp[maxn][20];

int n,pos,t;

int maxt;

int main()

for(int i=2;i<=maxt;i++)

}int ans=-1;

for(int i=0;i<=10;i++)

ans=max(ans,dp[maxt][i]);

pi(ans);

} return 0;

}

hdu 1176 免費餡餅 dp

去年暑假的時候就看到這個題了,當時太菜了。完全不知道做。今天看到了網上的hdu dp46題,準備暑假前把這46個題搞了,正好看到了這個免費餡餅,怒a之。狀態轉移方程 dp i j max dp i j max dp i 1 j max dp i 1 j 1 dp i 1 j 1 v i j 其中dp...

HDU1176 免費餡餅 DP

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

HDU 1176 免費餡餅 (DP)

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