思路:
我們需要維護的是挑戰了n個之後剩餘體力值,剩餘體力值越大越好
dp[n(i)][n(j)],第乙個維度,記錄當前是第i個挑戰,第二個維度記錄在當前第i挑戰時,對於前1~i個挑戰的其中幾個是否挑戰的情況與之前的情況相比較記錄最好的情況。
1.初始化dp[0][0] = c;
2.判斷你要挑戰第x個時,x-1個挑戰是否完成,如果x-1個挑戰都無法完成,那麼x個挑戰無法開始
3.w = min(剩餘體力,b) - a;
4.判斷w>0?
(1)如果大於零, 比較上個狀態(也需要判斷上個狀態是否能挑戰x個)和這個挑戰x個的體力剩餘
(2) 不大於零 , 無法挑戰,記錄上個挑戰了x個的挑戰(也需要判斷上個狀態是否能挑戰x個)
5.對最後乙個挑戰的dp值進行倒敘遍歷,找到第乙個體力值》0,及當前下標是最大挑戰次數
#include
#include
using
namespace std;
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
#define per(i,j,k) for(int i = (j); i >= (k); i--)
typedef
long
long ll;
const
int n =
1e3+10;
ll dp[n]
[n];
ll a[n]
, b[n]
, c[n]
;void
init
(int n )
intmain()
}//5.對最後乙個挑戰的dp值進行倒敘遍歷,找到第乙個體力值》0,及當前下標是最大挑戰次數
per(o, n,0)
}}return0;
}
程式設計之美2013全國挑戰賽測試賽
題目列表 a b 時間限制 1000ms 記憶體限制 1024mb 輸入兩個正整數a和b,求a b的值 兩個正整數a,b a b的和 對於小資料,0 a,b 10 對於大資料,0 a,b 10 100樣例輸入 2 3 樣例輸出 5 如下 1 include 2 include 3 include 4...
2013程式設計之美挑戰賽 集會
description 在一條河的一側,分布著 n 個村莊。這些村莊平日裡需要一些 往來,然而商人們來回走遍每一座村莊是非常辛苦的,於是他們決定每個月都在河邊舉行一次集會,大家都來集會上購買需要的物品。然而在集會地點的選擇上,大家卻有分歧,因為誰都不願意集會的地點離自己村莊非常遠。經過一番激烈的討論...
傳話遊戲 程式設計之美挑戰賽
題目描述 時間限制 2000ms 單點時限 1000ms 記憶體限制 256mb alice和bob還有其他幾位好朋友在一起玩傳話遊戲。這個遊戲是這樣進行的 首先,所有遊戲者按順序站成一排,alice站第一位,bob站最後一位。然後,alice想一句話悄悄告訴第二位遊戲者,第二位遊戲者又悄悄地告訴第...