题意:一共给你N个字符串,如果一个字符串的尾部字母和一个字符串的首部字母相同,/那么两个字符串就可以拼接起来,问最长的首尾字母相同的字符串的长度为多少。
//思路:DP便利一遍就够了 ,dp[a][b]表示以a为首字母b为尾字母最长序列

// 题意:一共给你N个字符串,如果一个字符串的尾部字母和一个字符串的首部字母相同,
//那么两个字符串就可以拼接起来,问最长的首尾字母相同的字符串的长度为多少。
//思路:DP便利一遍就够了
#include<bits/stdc++.h>
using namespace std;
#define int long long
int dp[1000][1000];//表示首字母为i,尾字母为j的最长长度
string s[5000005];
signed main(){int n;cin>>n;for(int i=0;i<n;i++){cin>>s[i]; }memset(dp,0,sizeof(dp));for(int i=0;i<n;i++){int m=s[i].length();int a=s[i][0]-'a',b=s[i][m-1]-'a';if(a!=b){for(int j=0;j<=30;j++){if(dp[j][a]!=0&&j!=a){dp[j][b]=max(m+dp[j][a],dp[j][b]);//必须加max!!!! }}dp[a][b]=max(dp[a][a]+m,dp[a][b]);//dp[a][b]需要单独提出来,因为可能之前有dp[a][b]的值,可能覆盖掉 }if(a==b){for(int j=0;j<=30;j++){if(dp[j][a]!=0||j==a){dp[j][a]+=m;//a==b就直接加 }}}}int k=0;for(int i=0;i<=30;i++){k=max(k,dp[i][i]);}cout<<k<<endl;return 0;
}

Dynasty Puzzles CodeForces - 191A+DP二维相关推荐

  1. 【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组

    测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组. 首先,我们发现每次拔高的区间都是一个后缀.这个自己画一画就大概能证出来了. 那么我们就有了一个状态定义:令 f(i,j) f ( i ...

  2. HDU 2159 FATE (DP 二维费用背包)

    题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...

  3. LeetCode 2132. 用邮票贴满网格图(DP/二维差分)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据). 给你邮票的尺寸为 stampHeight x stam ...

  4. Efficient Exchange DP 二维DP

    YouhaverecentlyacquiredanewjobattheBankforAcquiring Peculiar Currencies. Here people can make paymen ...

  5. [蓝桥杯 2018 国 B] 搭积木 (区间dp + 二维前缀和优化)

    原题链接(洛谷) 题目描述 小明对搭积木非常感兴趣.他的积木都是同样大小的正立方体. 在搭积木时,小明选取 m m m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第 0 0 0 层 ...

  6. 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)

    小松鼠吃松果 非常nicenicenice的一道题 首先考虑dpdpdp 容易想到按照时间来排序 然后定义dp[i]dp[i]dp[i]为考虑前iii个果子且吃掉第iii个的最大价值 那么每次都去前面 ...

  7. Tak and Cards(DP,二维背包)

    问题 K: Tak and Cards 时间限制: 1 Sec   内存限制: 128 MB 提交: 107   解决: 34 [ 提交][ 状态][ 讨论版][命题人: admin] 题目描述 Ta ...

  8. Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑到最大面积是由四种颜色构成的,且四种颜色可以从中心扩展出去,所以我们分别维护四种颜色的二维前缀和,O(1)O(1)O(1)计算矩阵内颜色的个数.现 ...

  9. 建立二维数组_二维数组的 DP

    寻找不同路径和 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标 ...

最新文章

  1. 几个不错的网页载入页面
  2. jsencrypt加密
  3. RTSP播放器开发填坑之道
  4. 【论文】基于特定实体的文本情感分类总结(PART II)
  5. AS使用NDK Cmake方式依赖第三方库注意事项
  6. 俄罗斯政府称“主权网络”测试成功
  7. 米范 - 为新媒体和电商从业者提供的酷导航
  8. php fopen下载文件,php fopen下载远程文件的函数 | 学步园
  9. SIMD与NEON概念理解
  10. python批量转换数据类型_玩转python 各种数据类型的转换
  11. android 安全加固总结报告,[原创]某加固详细分析总结,另附该加固脱壳机
  12. 使用计算机软件,计算机使用软件
  13. python安装osgeo库_python第三方库安装
  14. 机械键盘POKER2的硬编程
  15. [Python] 微信for PC自动群发消息、图片以及文件
  16. 终端上网_家里wifi上网很慢怎么办?通过这4招,让网速快到飞起来
  17. 怎么在服务器解压文件,云服务器怎么解压文件
  18. 2020年acm计算机比赛时间,最新!2020年五大学科竞赛时间安排汇总(建议收藏)...
  19. 画仓鼠大赛 评比开始!
  20. 基于在线问诊记录的抑郁症病患群组划分与特征分析

热门文章

  1. 通达信软件开发自定义接口的功能
  2. 学习笔记——JAVA执行javascript
  3. 用什么软件录屏最好?如何快速录制清晰无水印的视频?
  4. 《大型网站技术架构:核心原理与案例分析》之读书笔记
  5. 蓝牙遥控器与小米盒子增强版配对指南
  6. Apache Traffic Server 安装部署
  7. 【工具】fis3 - 语法教程(2)之定位资源
  8. 2021华为杯研究生数学建模竞赛B题思路分析+代码
  9. TensorFlow实现Pix2Pix
  10. redis命令配置别名步骤