sgu214:Weird Dissimilarity(DP)
来源:互联网 发布:安全生产网络知识竞赛 编辑:程序博客网 时间:2024/05/29 04:18
题目大意:
分析:
其中
AC code:
#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <iostream>#define ONLINE_JUDGE using namespace std;const int SIGMA = 209;const int MAXN = 2009;int n;char src[SIGMA];char s1[MAXN], s2[MAXN];int ls, l1, l2;int g[SIGMA][SIGMA];int min1[SIGMA], min2[SIGMA];int cn[300];int f[MAXN][MAXN];int from[MAXN][MAXN];string ans1, ans2;int main(){ #ifndef ONLINE_JUDGE freopen("sgu214.in", "r", stdin); freopen("sgu214.out", "w", stdout); #endif scanf("%s%s%s", src, s1, s2); ls = strlen(src), l1 = strlen(s1), l2 = strlen(s2); for(int i = 0; i < ls; ++i) cn[(int)src[i]] = i; for(int i = 0; i < ls; ++i) for(int j = 0; j < ls; ++j) { scanf("%d", &g[i][j]); if(g[i][min1[i]] > g[i][j]) min1[i] = j; if(g[min2[j]][j] > g[i][j]) min2[j] = i; } for(int i = 1; i <= l1; ++i) { f[i][0] = f[i-1][0]+g[cn[s1[i-1]]][min1[cn[s1[i-1]]]]; from[i][0] = 1; } for(int i = 1; i <= l2; ++i) { f[0][i] = f[0][i-1]+g[min2[cn[s2[i-1]]]][cn[s2[i-1]]]; from[0][i] = 2; } for(int i = 1; i <= l1; ++i) for(int j = 1; j <= l2; ++j) { int sum1 = f[i-1][j]+g[cn[s1[i-1]]][min1[cn[s1[i-1]]]]; int sum2 = f[i][j-1]+g[min2[cn[s2[j-1]]]][cn[s2[j-1]]]; int sum3 = f[i-1][j-1]+g[cn[s1[i-1]]][cn[s2[j-1]]]; f[i][j] = min(min(sum1, sum2), sum3); if(f[i][j] == sum1) from[i][j] = 1; else if(f[i][j] == sum2) from[i][j] = 2; else from[i][j] = 3; } printf("%d\n", f[l1][l2]); for(int i = l1, j = l2; i || j;) { switch(from[i][j]) { case 1:ans1 += s1[i-1];ans2 += src[min1[cn[s1[i-1]]]];--i;break; case 2:ans1 += src[min2[cn[s2[j-1]]]];ans2 += s2[j-1];--j;break; case 3:ans1 += s1[i-1];ans2 += s2[j-1];--i;--j;break; } } for(int i = ans1.size()-1; i >= 0; --i) putchar(ans1[i]); puts(""); for(int i = ans2.size()-1; i >= 0; --i) putchar(ans2[i]); puts(""); #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }
0 0
- sgu214:Weird Dissimilarity(DP)
- ZOJ 2366 Weird Dissimilarity (简单DP)
- sgu-214 Weird Dissimilarity
- weird
- Weird Events
- Weird Clock
- Weird Clock
- Weird Cryptography
- Weird Rounding
- Weird Rounding
- 笔记:Dissimilarity-Based Sparse Subset Selection
- hd 1887 Weird Numbers
- hoj 11170 Weird Numbers
- zoj 1476 Weird Clock
- Weird, but OK
- UVA 11983 Weird Advertisement
- weird xmlrootelement problem
- HDU 1393 Weird Clock
- SQLServer---查询过程中的数据类型转化
- fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 188 Best Time to Buy and Sell Stock IV
- iOS中将汉字转换成拼音
- Solr5 快速开始
- sgu214:Weird Dissimilarity(DP)
- 2440+zc301摄像头 无线网络视频监控系统
- hadoop文件系统错误could only be replicated to 0 nodes, instead of 1解决方法
- Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中
- Eclipse安装配置PyDev插件
- spring data mongodb更新或删除子元素为数组的数据
- Android中的Grid间距(Grid Spacing on Android)
- Web Service学习笔记(二)[web service的三大技术基础]
- 中文字符串与二进制字符串相互转化