poj3003 2397 DP 記錄路徑

2021-06-04 11:56:57 字數 656 閱讀 9337

這兩題是一模一樣的

最近做了好多這種揹包的題,但是這題需弄清的地方還是不少,有些繞

f陣列其實是可以省的

#include #define oo 10000000

using namespace std;

int cas,n,a[1010],p,q,dp[2][1010],pre[41][1010];

bool f[2][1010],ans[41];

int main()

else if (dp[p][j+a[i]]>max(j+a[i],dp[q][j]))

}if (j-a[i]>=0)

else if (dp[p][j-a[i]]>max(j-a[i],dp[q][j])) }}

p = 1 - p;

q = 1 - q;

}if (dp[q][0]==0) printf("impossible\n");

else

for (int i=1;i<=n;i++)

if (!ans[i]) printf("u");

else printf("d");

printf("\n");

}

}return 0;

}

POJ 2411 記錄狀態的dp

和poj3254一樣 include include include include include include include include include include using namespace std define ll long long ll dp 1 12 100 13 i...

POJ 3003 DP 尋路 記錄路徑

我一開始把m看成是每個a i的上限了,這是致命的,因為這個題dfs暴力搜尋 剪枝是過不了的因為m 40,全部狀態有2的四十次冪。正解是dp,設dp i j 為在i處j高度的地方,蜘蛛俠所經歷的的最大高度的最小值,這個dp i j 一定是由dp i 1 j x和dp i 1 j x 如果j x不超過1...

POJ 3003 DP 尋路 記錄路徑

我一開始把m看成是每個a i的上限了,這是致命的,因為這個題dfs暴力搜尋 剪枝是過不了的因為m 40,全部狀態有2的四十次冪。正解是dp,設dp i j 為在i處j高度的地方,蜘蛛俠所經歷的的最大高度的最小值,這個dp i j 一定是由dp i 1 j x和dp i 1 j x 如果j x不超過1...