暑假集训单切赛第一场 CF 191A Dynasty Puzzles
2013-08-27 18:07
148 查看
题意不说了,看原题吧,思路见代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int n; char str[15]; int len; char a,b; //a为名字的开头字符,b为名字的结尾字符 long long dp[26][26]; //dp[i][j]记录以字母i开头和字母j结尾的朝代名长度 ,最后只要遍历一遍dp[i][i],取最大长度的即可 int main() { int tmp; memset(dp,0,sizeof(dp)); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s",str); len=strlen(str); a=str[0]; b=str[len-1]; int flag=0; //如果以a结尾且不等于0的朝代名长度加上他的名字,比现有的朝代名更长,则更新。 for(int j=0;j<=25;j++){ tmp=a-'a'; if(dp[j][tmp]!=0 && dp[j][tmp]+len>dp[j][b-'a']){ flag=1; dp[j][b-'a']=dp[j][tmp]+len; } } //如果他名字足够长,也可以直接当一个朝代的首位皇帝 if(dp[a-'a'][b-'a']<len) dp[a-'a'][b-'a']=len; } long long ans=0; //遍历对角线上的,取最大值 for(int j=0;j<=25;j++){ if(dp[j][j]>ans) ans=dp[j][j]; } printf("%I64d\n",ans); return 0; }
相关文章推荐
- 暑假集训单切赛第一场 CF 266E More Queries to Array(线段树+二项式展开式)
- 暑假集训单切赛第一场 UVA 1737 Mnemonics and Palindromes 3
- 暑假集训单切赛第一场 POJ 2309 BST(找规律的题)
- 大一暑假集训单切赛第三场
- 大一暑假集训第六周第一场单切赛
- 2013暑假集训B组训练赛第一场
- CF 678C 暑假集训13(gcd,lcm)
- 2015暑假ACM集训结训赛(第一场)(SDUTOJ)
- 暑假集训-个人赛第一场
- CF 676A 暑假集训13
- 大一暑假集训单切赛第二场
- 2013暑假集训 第一场个人赛总结
- CF 678A 暑假集训13
- 暑假集训-个人赛第一场
- CF 678B 暑假集训13(闰年判断)
- CSU-ACM暑假集训基础组训练赛(2) 解题报告
- 暑假集训练习赛题解
- 暑假集训0815
- ACM暑假留校集训总结
- 2010-zzuli暑假集训选拔赛四场总结