uva 10604 - Chemical Reaction
2014-03-14 13:59
274 查看
#include <stdio.h> #include <string.h> #define MAXN 12 #define min(a,b) (a)<(b)?(a):(b) #define INF 1<<30 int n; struct pair { int next; int energy; }edge[6][6]; int table[MAXN][MAXN][MAXN][MAXN][MAXN][MAXN]; bool mark[MAXN][MAXN][MAXN][MAXN][MAXN][MAXN]; int m=0; int dp(int x[]){ int a=x[0]; int b=x[1]; int c=x[2]; int d=x[3]; int e=x[4]; int f=x[5]; if(mark[a][b][c][d][e][f]==1) return table[a][b][c][d][e][f]; mark[a][b][c][d][e][f]=1; table[a][b][c][d][e][f] = INF; int y[] = {x[0],x[1],x[2],x[3],x[4],x[5]}; for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ if(y[i]==0||y[j]==0) continue; if(i==j&&y[i]<2) continue; y[i]--; y[j]--; y[edge[i][j].next]++; int tmp = dp(y); if(tmp<INF) table[a][b][c][d][e][f]=min(table[a][b][c][d][e][f], tmp+edge[i][j].energy); y[i]++; y[j]++; y[edge[i][j].next]--; } } if(table[a][b][c][d][e][f]==INF) return table[a][b][c][d][e][f]=0; else return table[a][b][c][d][e][f]; } void solve() { int cases; scanf("%d", &cases); int tube[6]; while(cases--){ scanf("%d", &m); memset(tube, 0, sizeof(tube)); memset(mark, 0, sizeof(mark)); for(int i=0;i<m;i++){ for(int j=0;j<m;j++){ scanf("%d%d",&edge[i][j].next, &edge[i][j].energy); edge[i][j].next-=1; } } int tmp=0,a=0; scanf("%d", &tmp); for(int i=0;i<tmp;i++){ scanf("%d", &a); tube[a-1]++; } char ch[10]; scanf("%s", ch); int result = dp(tube); printf("%d\n", result); } } int main() { solve(); return 0; }
多么吊的一道题啊,java有过的求受教。
貌似java我刚开完数组就TLE了
java搞不过去就开了一个c++, 原来不更新数组空间时间差了2秒多。。。
鬼题目还卡语言呢,这题我直接交了20多发。。。我都不想说什么了,真没话说
相关文章推荐
- UVA 10604--Chemical Reaction+记忆化搜索
- UVA 10604 Chemical Reaction(六维dp数组)
- uva 10604 - Chemical Reaction (记忆化搜索)
- uva 10604 化学药品链式dp
- UVA - 10604 Chemical Reaction
- uva 10604 Chemical Reaction (DP)
- uva 10604 Chemical Reaction 记忆化搜索
- UVA - 10604 Chemical Reaction
- uva_10604 - Chemical Reaction( Hash+状态压缩 )
- UVA - 10604Chemical Reaction(记忆化搜索)
- uva 10604 - Chemical Reaction
- UVa 10604 Chemical Reaction(hash记忆化搜索)
- UVA 10604 Chemical Reaction
- UVA 10604(进制式dp)
- UVA 10604 (记忆化搜索 + hash)
- UVA - 10604 Chemical Reaction 记忆化搜索
- uva 10604
- uva 10604 - Chemical Reaction(状态压缩dp)
- UVA - 10604 Chemical Reaction(6维dp+记忆化搜索)
- uva 10604 Chemical Reaction