題目大意:
雷濤的小貓雷濤同學非常的有愛心,在他的宿舍裡,養著乙隻因為受傷被救助的小貓(當然,這樣的行為是違反學生宿舍管理條例的)。 在他的照顧下,小貓很快恢復了健康,並且愈發的活潑可愛了。可是有一天,雷濤下課回到寢室,卻發現小貓不見了!經過一番尋找,才發現她正趴在陽台上對窗外的柿子樹發呆…在北京大學的校園裡,有許多柿子樹,在雷濤所在的宿舍樓前,就有n棵。並且這n棵柿子樹每棵的高度都是h。冬天的寒冷漸漸籠罩了大地,樹上的葉子漸漸掉光了,只剩下乙個個黃澄澄的柿子,看著非常喜人。而雷濤的小貓恰好非常的愛吃柿子,看著窗外樹上的柿子,她十分眼饞,於是決定利用自己敏捷的跳躍能力跳到樹上去吃柿子。小貓可以從宿舍的陽台上跳到窗外任意一棵柿子樹的樹頂。之後,她每次都可以在當前位置沿著當前所在的柿子樹向下跳1單位距離。當然,小貓的能力遠不止如此,她還可以在樹之間跳躍。每次她都可以從當前這棵樹跳到另外的任意一棵,在這個過程中,她的高度會下降delta單位距離。每個時刻,只要她所在的位置有柿子,她就可以吃掉。整個「吃柿子行動」一直到小貓落到地面上為止。雷濤調查了所有柿子樹上柿子的生長情況。飽很想知道,小貓從陽台出發,最多能吃到多少柿子?他知道寫乙個程式可以很容易的解決這個問題,但是他現在懶於寫任何**。於是,現在你的任務就是幫助雷濤寫乙個這樣的程式。左圖是n=3,h=10,delta=2的乙個例子。小貓按照圖示路線進行跳躍,可以吃到最多的8個柿子
思路:直接進行dp。dp[i][j]表示第i棵樹高度j的得到柿子的最大值。
dp[i][j] = max(dp[i][j + 1] , max)+ num[i][j]
時間複雜度o(n^3
),會超時
在更新解的時候存下每一高度的最大值,那麼max可以直接得到。
時間複雜度o(n^2),可以接受。
1 #include2#define ios ios::sync_with_stdio(false);//
不可再使用scanf printf
3#define max(a, b) ((a) > (b) ? (a) : (b))//
禁用於函式,會超時
4#define min(a, b) ((a) < (b) ? (a) : (b))
5#define mem(a) memset(a, 0, sizeof(a))
6#define dis(x, y, x1, y1) ((x - x1) * (x - x1) + (y - y1) * (y - y1))
7#define mid(l, r) ((l) + ((r) - (l)) / 2)
8#define lson ((o)<<1)
9#define rson ((o)<<1|1)
10#define accepted 0
11#pragma comment(linker, "/stack:102400000,102400000")//
棧外掛程式12
using
namespace
std;
13 inline int
read()
1417
while (ch>='
0'&&ch<='9')
18return x*f;19}
2021 typedef long
long
ll;22
const
int maxn = 2000 + 10;23
const
int mod = 1000000007;//
const引用更快,巨集定義也更快
24const
int inf = 1e9 + 7;25
const
double eps = 1e-6;26
27int
dp[maxn][maxn];
28int num[maxn][maxn];//
柿子數量
29int max[maxn];//
每一高度的最大值
3031
intmain()
3244}45
for(int i = 1; i<= n; i++)dp[i][h] = num[i][h], max[h] =max(max[h], dp[i][h]);
46for(int i = h - 1; i >= 1; i--)
4754
}55 printf("
%d\n
", max[1
]);56
return
accepted;
57 }
bzoj1207 雷濤的小貓
有n 5000 棵柿子樹,每棵上面都有若干柿子且每棵樹高度均為h 5000 現在要從樹頂開始吃柿子,每次可以使自己的高度下降1,但是所在的樹沒變,或者換到任意一棵樹上,但是高度會降低delta,問到達地面 高度為0 時,最多能吃多少柿子 讀題之後,首先想到乙個最樸素的df 設f i j 表示當高度為...
openjudge 雷濤的小貓
總時間限制 20000ms 單個測試點時間限制 10000ms 記憶體限制 65536kb 描述 雷濤同學非常的有愛心,在他的宿舍裡,養著乙隻因為受傷被救助的小貓 當然,這樣的行為是違反學生宿舍管理條例的 在他的照顧下,小貓很快恢復了健康,並且愈發的活潑可愛了。可是有一天,雷濤下課回到寢室,卻發現小...
雷濤的小貓題解
雷濤同學非常的有愛心,在他的宿舍裡,養著乙隻因為受傷被救助的小貓 當然,這樣的行為是違反學生宿舍管理條例的 在他的照顧下,小貓很快恢復了健康,並且愈發的活潑可愛了。可是有一天,雷濤下課回到寢室,卻發現小貓不見了!經過一番尋找,才發現她正趴在陽台上對窗外的柿子樹發呆 在北京大學的校園裡,有許多柿子樹,...