YT05-動態歸劃求解課後題目-1003—免費餡餅 -(6.21日-煙臺大學ACM預備隊解題報告)
免費餡餅
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 17 Accepted Submission(s) : 7
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
都說天上不會掉餡餅,但有一天gameboy正走在回家的小徑上,忽然天上掉下大把大把的餡餅。說來gameboy的人品實在是太好了,這餡餅別處都不掉,就掉落在他身旁的10米範圍內。餡餅如果掉在了地上當然就不能吃了,所以gameboy馬上卸下身上的揹包去接。但由於小徑兩側都不能站人,所以他只能在小徑上接。由於gameboy平時老呆在房間裡玩遊戲,雖然在遊戲中是個身手敏捷的高手,但在現實中運動神經特別遲鈍,每秒種只有在移動不超過一米的範圍內接住墜落的餡餅。現在給這條小徑如圖示上座標:
為了使問題簡化,假設在接下來的一段時間裡,餡餅都掉落在0-10這11個位置。開始時gameboy站在5這個位置,因此在第一秒,他只能接到4,5,6這三個位置中其中一個位置上的餡餅。問gameboy最多可能接到多少個餡餅?(假設他的揹包可以容納無窮多個餡餅)
為了使問題簡化,假設在接下來的一段時間裡,餡餅都掉落在0-10這11個位置。開始時gameboy站在5這個位置,因此在第一秒,他只能接到4,5,6這三個位置中其中一個位置上的餡餅。問gameboy最多可能接到多少個餡餅?(假設他的揹包可以容納無窮多個餡餅)
Input
輸入資料有多組。每組資料的第一行為以正整數n(0<n<100000),表示有n個餡餅掉在這條小徑上。在結下來的n行中,每行有兩個整數x,T(0<T<100000),表示在第T秒有一個餡餅掉在x點上。同一秒鐘在同一點上可能掉下多個餡餅。n=0時輸入結束。
Output
每一組輸入資料對應一行輸出。輸出一個整數m,表示gameboy最多可能接到m個餡餅。
提示:本題的輸入資料量比較大,建議用scanf讀入,用cin可能會超時。
提示:本題的輸入資料量比較大,建議用scanf讀入,用cin可能會超時。
Sample Input
6 5 1 4 1 6 1 7 2 7 2 8 3 0
Sample Output
4
Author
動態規劃的方法自底向上對每一個位置,每一秒時間求當前的最大餡餅數。
可以得出這樣的數塔結構:
第0秒 5 (這裡的數字指的是第N秒可能到達的位置座標)
第1秒 4 5 6
第2秒 3 4 5 6 7
第3秒 2 3 4 5 6 7 8
第4秒 1 2 3 4 5 6 7 8 9
第5秒 0 1 2 3 4 5 6 7 8 9 10
第6秒 0 1 2 3 4 5 6 7 8 9 10
這樣就可以看出怎麼動態規劃了,第i秒第j的位置始終存放這從此位置可得到的最大餡餅數,那麼在0秒的5位置處就是最大可得到的餡餅數。
以給的例項為例子來寫一下:
0 1 2 3 4 5 6 7 8 9 10......這是代表座標
0 0 0 0 1 1 1 0 0 0 0 ......這是說第1秒的落餅情況
0 0 0 0 0 0 0 2 0 0 0 ......第2秒
0 0 0 0 0 0 0 0 1 0 0 ......第3秒
從最後一秒向前遞推,找到DP的狀態轉移方程
dp[i][j]=dp[i][j]+max(dp[i+1][j],dp[i+1][j-1],dp[i+1][j+1]);
注意,邊界點單獨考慮。
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int dp[100005][12];
int main()
{
int n,i,j,maxt;
int x,t;
while(cin>>n,n)
{
maxt=0;
memset(dp,0,sizeof(dp));
for(i=0; i<n; i++)
{
cin>>x>>t;
dp[t][x]++;
if(maxt<t)maxt=t;
for(i=maxt-1; i>=0; i--)
{
dp[i][0]+=max(dp[i+1][1],dp[i+1][0]);
for(j=1; j<11; j++)
{
dp[i][j]+=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1]);
}
}
cout<<dp[0][5]<<endl;
}
return 0;
}
}
相關文章
- YT05-動態歸劃求解課堂題目-1003—數塔-(6.21日-煙臺大學ACM預備隊解題報告)ACM
- YT05-動態歸劃求解課後題目-1004—Max Sum -(6.21日-煙臺大學ACM預備隊解題報告)ACM
- YT05-動態歸劃求解課後題目-1001—FatMouse's Speed-(6.21日-煙臺大學ACM預備隊解題報告)ACM
- YT05-動態歸劃求解課堂題目-1004—最少攔截系統-(6.21日-煙臺大學ACM預備隊解題報告)ACM
- YT05-動態歸劃求解課後題目-1002—Super Jumping! Jumping! Jumping! -(6.21日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課後題目-1001 母牛的故事-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課後題目-1003 不容易系列之(3)—— LELE的RPG難題-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課後題目-1002 超級樓梯-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課堂題目-1001 蟠桃記-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課堂題目-1005 Children’s Queue-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課堂題目-1002 折線分割平面-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課堂題目-1003 獻給杭電五十週年校慶的禮物-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課堂題目-1004 不容易系列之一-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- YT03-遞推求解課後題目-1006 不容易系列之(4)——考新郎-(6.7日-煙臺大學ACM預備隊解題報告)ACM
- hdu 1176 免費餡餅(動態規劃)動態規劃
- YT04-貪心課後練習-1004—迷瘴-(6.14日-煙臺大學ACM預備隊解題報告)ACM
- YT04-貪心課後練習-1006—PAINTER(6.14日-煙臺大學ACM預備隊解題報告)AIACM
- YT04-貪心課後練習-1002—Repair the Wall-(6.14日-煙臺大學ACM預備隊解題報告)AIACM
- YT06-揹包-1001—Bone Collector -(6.27日-煙臺大學ACM預備隊解題報告)ACM
- YT04-貪心課堂練習-1004—Fire Net-(6.14日-煙臺大學ACM預備隊解題報告)ACM
- YT04-貪心課堂練習-1005—Wooden Sticks-(6.14日-煙臺大學ACM預備隊解題報告)ACM
- YT04-貪心課後練習-1003—悼念512汶川大地震遇難同胞——老人是真餓了-(6.14日-煙臺大學ACM預備隊解題報告)ACM
- YT06-揹包-1002—Piggy-Bank -(6.27日-煙臺大學ACM預備隊解題報告)ACM
- YT04-貪心課堂練習-1001 今年暑假不AC-(6.14日-煙臺大學ACM預備隊解題報告)ACM
- YT06-揹包-1003—悼念512汶川大地震遇難同胞——珍惜現在,感恩生活 -(6.27日-煙臺大學ACM預備隊解題報告)ACM
- 動態規劃入門 E – 免費餡餅 (dp的另一個應用)動態規劃
- 51nod-3986-免費的餡餅
- 【基礎dp】HDU 1176 免費餡餅
- 「暑期訓練」「基礎DP」免費餡餅(HDU-1176)
- 河南理工大學程式設計(ACM)大賽解題報告程式設計ACM
- 動態規劃求解最長上升子序列問題動態規劃
- 動態規劃解題方法動態規劃
- 動態規劃分類題目總結動態規劃
- 杭電ACM hdu 2079 選課時間 解題報告(母函式)ACM函式
- 大學畢業課題研究開題報告PPT分享-20套可下載
- NYNU ACM 藍橋杯選拔賽 解題報告ACM
- 山東省第四屆acm解題報告(部分)ACM
- 動態規劃9:變態跳臺問題動態規劃