poj 1695 动态规划
2013-08-23 22:26
176 查看
思路:和黑书上的跳舞机类似
#include<map> #include<set> #include<cmath> #include<queue> #include<cstdio> #include<vector> #include<string> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define Maxn 31 #define Maxm 100010 #define LL __int64 #define Abs(x) ((x)>0?(x):(-x)) #define lson(x) (x<<1) #define rson(x) (x<<1|1) #define inf 0x7fffffff #define Mod 1000000007 using namespace std; int dp[Maxn][Maxn][Maxn][Maxn]; int dis[Maxn][Maxn]; int main() { int t,n,i,j,x,k,r; scanf("%d",&t); while(t--){ memset(dis,0,sizeof(dis)); memset(dp,48,sizeof(dp)); scanf("%d",&n); for(i=1;i<n;i++){ for(j=i+1;j<=n;j++){ scanf("%d",&x); dis[i][j]=dis[j][i]=x; } } memset(dp[1],0,sizeof(dp[1])); for(i=2;i<=n;i++){ for(j=1;j<=i-1;j++){ for(k=1;k<=i-1;k++){ for(r=1;r<=i-1;r++){ dp[i][i][k][r]=min(dp[i][i][k][r],dp[i-1][j][k][r]+dis[j][i]); dp[i][j][i][r]=min(dp[i][j][i][r],dp[i-1][j][k][r]+dis[k][i]); dp[i][j][k][i]=min(dp[i][j][k][i],dp[i-1][j][k][r]+dis[r][i]); } } } } int ans=100000000; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ for(k=1;k<=n;k++){ ans=min(dp [i][j][k],ans); } } } printf("%d\n",ans); } return 0; }
相关文章推荐
- POJ-1179 Polygon (动态规划)
- POJ1037————A decorative fence(动态规划)
- poj 1065 贪心或者动态规划
- POJ 3267 The Cow Lexicon 动态规划
- poj 1784 Huffman's Greed 动态规划四边形加速求最优二叉搜索树
- poj2385+动态规划有点还 不能完全理解
- POJ 1949 Chores 动态规划
- poj2229--Sumsets(动态规划)
- 【递归 & 动态规划】POJ 1191 棋盘分割
- [ACM] POJ 1141 Brackets Sequence (区间动态规划)
- [ACM] POJ 2593 Max Sequence (动态规划,最大字段和)
- poj_2486 动态规划
- Noi 01炮兵阵地 & poj1185 &NYOJ81 炮兵阵地 状态压缩和动态规划
- 【动态规划】[POJ 1088]滑雪
- poj 2392 Space Elevator(动态规划)
- POJ 2951 Cake Cutting(动态规划)
- poj2479 Maximum sum(动态规划)
- POJ 1015 动态规划
- POJ_1260_Pearls_动态规划
- poj1141 动态规划