題目大意:
思路:每個傳送陣可以選擇傳送或者不傳送。
從n->1開始考慮。從終點最遠的傳送陣開始列舉
#include
using
namespace std;
#define ll long long
struct node
node[16]
;int
cmp(node a, node b)
ll t
(ll l, ll r)
//從l到r不經過傳送陣的最少時間
if(s==1)
ll c=
(ll)
log2
(s);
c=r-
pow(
2, c)
;return
t(l, c)+1
;}ll dfs
(int n,
int cut)
else
if(n>=node[cut]
.y)//如果當前位置》傳送陣的終點:選擇傳送或者不傳送的最少時間的方案
else
}int
main()
}sort
(node+
1, node+cut+
1, cmp)
;//從終點最大的傳送陣開始選擇
cout<<
dfs(n, cut-1)
<
//從n->1
return0;
}
動態規劃 0 1揹包選不選
1.給你n件物品,給你乙個包重量為m 問你正好裝 積為m?有多少種選擇 我這件物品要麼就是裝進來,要麼就是不裝進來,2 n種選擇 找到遞迴退出條件 揹包容量為0,則有唯一一種裝法 0件物品則只有0件裝法 poj 2755.cpp 定義控制台應用程式的入口點。include stdafx.h incl...
看懂0 1揹包與完全揹包的空間優化
0 1揹包的主要思路就是 這件物品,取還是不取。用乙個二維陣列dp i v 來表示對第i個物品,揹包容量為v時的情況。c i 表示第i件物品的體積,w i 表示第i件物品的價值。那麼考慮第i件物品取與不取 如果不取,那麼就可以轉化為i 1件物品 容量仍然為v 價值沒有增加的情況 dp i 1 v 如...
01揹包 與 完全揹包 中的降維
每種物品只有一件 對於二維降一維,外層迴圈中的每乙個i其實是不需要記錄的 所以在第i次迴圈剛開始時,所有的dp都未更新,此時下面的dp x 記錄的是前i 1個物品在容量是x時的最大值 x 0 x v dp 0 dp 1 dp 2 dp dp v 相當於dp i x dp i 1 x 和dp i 1 ...