UVA1368解题报告
2017-05-31 22:08
260 查看
我的一个审题误区是以为要在这几个序列里找到ham值最小的,实际上并不是这样,他要的是一个最小的ham值的DNA序列,并不一定要在已有的DNA序列里。所以这个简单了不少,因为我们可以一列一列的比较,一列一个字符的输出。这省去了我的不少开销。要相似度最大输出每列出现频率最高的即可,因为只有四个字符用map映射即可。
附上AC代码Time 0ms
附上AC代码Time 0ms
#include<cstdio> #include<iostream> #include<cstring> #include<string> #include<map> #include<algorithm> using namespace std; const int maxm=50+10; const int maxn=1000+10; const char dna[]="TAGC"; int main() { int T; scanf("%d",&T); while(T--) { int m,n,ham=0; map<char,int> mm[maxn]; string DNA[maxm]; scanf("%d %d",&m,&n); for(int i=0;i<m;i++) cin>>DNA[i]; for(int i=0;i<n;i++) //init for(int j=0;j<4;j++) mm[i][dna[j]]=0; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { char c=DNA[j][i]; mm[i][c]++; } for(int i=0;i<n;i++) { int pos=0,ans=0; for(int j=0;j<4;j++) { char c=dna[j]; int temp=mm[i][c]; if(temp>ans) { ans=temp; pos=j; } else{ if(temp==ans){ if(dna[j]<dna[pos]) pos=j; ans=temp; } } } ham+=(m-ans); printf("%c",dna[pos]); } printf("\n%d\n",ham); } }
相关文章推荐
- UVALive 5864 Register Allocation 解题报告
- UVa 11134 Fabled Rooks 解题报告(贪心)
- UVa 10827 Maximum sum on a torus 解题报告(前缀和)
- 解题报告 之 UVA1605 Building for UN
- Uva 10780 Again Prime? No time. 解题报告(数学)
- UVA11478 Halum 解题报告【图论】【二分答案】【SPFA】【差分约束系统】
- UVA 12541 Birthdates 解题报告
- uva10603 解题报告
- UVA1625 颜色的长度(color length)(重庆一中高2018级信息学竞赛测验10) 解题报告
- 解题报告 之 UVA12563 Partitioning by Palindromes
- uva 101 The Blocks Problem 解题报告!
- {UVA} UVA-414 解题报告
- 解题报告:UVA11395 Sigma Function 找规律
- UVa 455 - Periodic Strings - ( C++ ) - 解题报告
- UVA 10361 解题报告
- 解题报告 之 UVA563 Crimewave
- UVA 12587 Reduce the Maintenance Cost 解题报告
- 【解题报告】uva103_Stacking Boxes(堆砌盒子, dp)
- uva 705 Slash Maze 解题报告
- 【解题报告】uva10131_Is Bigger Smarter?(越大越聪明, dp, LIS)