這兩題是一模一樣的
最近做了好多這種揹包的題,但是這題需弄清的地方還是不少,有些繞
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...