線性dp,
肯定以任務為階段
3個人的位置為附屬條件
其中乙個人的位置一定是任務完成的地點,即省去一維
o( n*l^3)
#include using namespace std;
typedef long long ll;
//typedef __int128 ll;
//typedef unsigned long long ull;
//#define f first
//#define s second
typedef long double ld;
typedef pairpii;
typedef pairpll;
typedef pairpdd;
const ld pi=acos(-1);
const ld eps=1e-9;
//unordered_mapmp;
#define ls (o<<1)
#define rs (o<<1|1)
#define pb push_back
const int seed=131;
const int m = 1e5+7;
int c[207][207];
int p[1007];
int dp[1007][207][207];//f i,j,k 完成第i個服務,三人分別在 j、k、p[i]是的最小花費
int main()
int ans=1e9;
for(int i=1;i<=l;i++)
for(int j=1;j<=l;j++)
ans=min(ans,dp[n][i][j]);
cout
}
AcWing 274 移動服務 線性DP
乙個公司有三個移動服務員,最初分別在位置1,2,3處。如果某個位置 用乙個整數表示 有乙個請求,那麼公司必須指派某名員工趕到那個地方去。某一時刻只有乙個員工能移動,且不允許在同樣的位置出現兩個員工。從 p 到 q 移動乙個員工,需要花費 c p,q 這個函式不一定對稱,但保證 c p,p 0。給出n...
acwing 274 移動服務(線性dp)
乙個公司有三個移動服務員,最初分別在位置1,2,3處。如果某個位置 用乙個整數表示 有乙個請求,那麼公司必須指派某名員工趕到那個地方去。某一時刻只有乙個員工能移動,且不允許在同樣的位置出現兩個員工。從 p 到 q 移動乙個員工,需要花費 c p,q 這個函式不一定對稱,但保證 c p,p 0。給出n...
線性dp 區間dp
1 尼克的任務 額一道挺水的題,愣是做了幾個小時 動態規劃大致的思路還是找乙個轉移 換個詞就是影響 我們可以明顯看出本題的規則 空暇時,一遇到任務必須挑乙個接 求1 n時間內最大空暇時間 所以將任務排序是必要的,兩個關鍵字 再來想象一下當我做到第i 個任務時,我在 st i st i t i 1 時...