Dynasty Puzzles CodeForces - 191A+DP二维
题意:一共给你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二维相关推荐
- 【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
测试地址:方伯伯的玉米田 做法:本题需要用到DP+二维树状数组. 首先,我们发现每次拔高的区间都是一个后缀.这个自己画一画就大概能证出来了. 那么我们就有了一个状态定义:令 f(i,j) f ( i ...
- HDU 2159 FATE (DP 二维费用背包)
题目链接 题意 : 中文题不详述. 思路 : 二维背包,dp[i][h]表示当前忍耐值为i的情况下,杀了h个怪得到的最大经验值,状态转移方程: dp[i][h] = max(dp[i][h],dp[i ...
- LeetCode 2132. 用邮票贴满网格图(DP/二维差分)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据). 给你邮票的尺寸为 stampHeight x stam ...
- Efficient Exchange DP 二维DP
YouhaverecentlyacquiredanewjobattheBankforAcquiring Peculiar Currencies. Here people can make paymen ...
- [蓝桥杯 2018 国 B] 搭积木 (区间dp + 二维前缀和优化)
原题链接(洛谷) 题目描述 小明对搭积木非常感兴趣.他的积木都是同样大小的正立方体. 在搭积木时,小明选取 m m m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第 0 0 0 层 ...
- 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)
小松鼠吃松果 非常nicenicenice的一道题 首先考虑dpdpdp 容易想到按照时间来排序 然后定义dp[i]dp[i]dp[i]为考虑前iii个果子且吃掉第iii个的最大价值 那么每次都去前面 ...
- Tak and Cards(DP,二维背包)
问题 K: Tak and Cards 时间限制: 1 Sec 内存限制: 128 MB 提交: 107 解决: 34 [ 提交][ 状态][ 讨论版][命题人: admin] 题目描述 Ta ...
- Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和
传送门 文章目录 题意: 思路: 题意: 思路: 考虑到最大面积是由四种颜色构成的,且四种颜色可以从中心扩展出去,所以我们分别维护四种颜色的二维前缀和,O(1)O(1)O(1)计算矩阵内颜色的个数.现 ...
- 建立二维数组_二维数组的 DP
寻找不同路径和 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标 ...
最新文章
- 几个不错的网页载入页面
- jsencrypt加密
- RTSP播放器开发填坑之道
- 【论文】基于特定实体的文本情感分类总结(PART II)
- AS使用NDK Cmake方式依赖第三方库注意事项
- 俄罗斯政府称“主权网络”测试成功
- 米范 - 为新媒体和电商从业者提供的酷导航
- php fopen下载文件,php fopen下载远程文件的函数 | 学步园
- SIMD与NEON概念理解
- python批量转换数据类型_玩转python 各种数据类型的转换
- android 安全加固总结报告,[原创]某加固详细分析总结,另附该加固脱壳机
- 使用计算机软件,计算机使用软件
- python安装osgeo库_python第三方库安装
- 机械键盘POKER2的硬编程
- [Python] 微信for PC自动群发消息、图片以及文件
- 终端上网_家里wifi上网很慢怎么办?通过这4招,让网速快到飞起来
- 怎么在服务器解压文件,云服务器怎么解压文件
- 2020年acm计算机比赛时间,最新!2020年五大学科竞赛时间安排汇总(建议收藏)...
- 画仓鼠大赛 评比开始!
- 基于在线问诊记录的抑郁症病患群组划分与特征分析