詳見**:
#include #include#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define maxn 1000005
using
namespace
std;
/*題意:給定n個柱子,現在要在這n個柱子之間搖擺,直至到達最右端的那乙個柱子,問最少要
搖擺多少次. 搖擺的時機是在開始的時候或者是從某一點搖擺到某個對稱的點時,保
證所有的柱子的高度不低於出發點的高度.
解法:設dp[i]表示在x座標為i時候所需要的最少搖擺次數.這裡有乙個準備工作就是計算出
每根柱子的乙個可接受區間.計算的結果是對於第k個柱子範圍是[ ceil(xk-sqrt(2*yk*y1-y1*y1)), xk-1 ]
然後對每根柱子所能夠接受的區間內進行動態規劃
dp[i] = max(dp[k] + 1), 其中要求k在i號柱子接受的區間內
*/int
n, dp[maxn];
struct
node e[
5005
];int
dp()
else}}
return ret == inf ? -1
: ret;
}int
main()
printf(
"%d\n
", dp());
}return
0;
}
POJ 1925 Spiderman 動態規劃
詳見 include include include include include include define inf 0x3f3f3f3f define maxn 1000005 using namespace std 題意 給定n個柱子,現在要在這n個柱子之間搖擺,直至到達最右端的那乙個柱子...
poj解題報告 1925
題意 給定n個塔的橫座標和高度,保證高度各不相同且橫座標遞增,蜘蛛俠可以向乙個塔射蛛絲然後盪到當前的相對位置,求最少要用多少次蛛絲。分析 dp i 代表著當他到x軸i的位置時最少搖擺了幾次。因為每次搖擺他都到了關於被他蛛網固定的建築的對稱位置。那麼他的高度在每次切換建築目標時都是不變的。如下 inc...
POJ 1088 滑雪 動規
滑雪 time limit 1000ms memory limit 65536k total submissions 75664 accepted 28044 description michael喜歡滑雪百這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你...