博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihoCoder1690 (动态规划)
阅读量:6523 次
发布时间:2019-06-24

本文共 914 字,大约阅读时间需要 3 分钟。

#1690 : AEIOU

时间限制:
10000ms
单点时限:
1000ms
内存限制:
256MB

描述

给定一个只包含aeiou的字符串S,请你找到其中的最长的子序列,满足:

1. 所有的a都在e和i之前,所有的e都在i之前;

2. 所有的o都在u之前。  

输出最长满足条件的子序列的长度。  

例如对于S = aeiouaeiou,满足条件的最长的子序列有 aoaeiou, aeiouiu等。长度都是7。

输入

输入只有一行,字符串S。  

对于50%的数据,1 ≤= |S| ≤ 1000  

对于100%的数据,1 ≤= |S| ≤ 1000000

输出

一个整数,表示答案。

样例输入
aeiouaeiou
样例输出
7 分析:最长子列必有a->e->i,o->u,先求所有a在e前,所有e在i前的最长子列, 再求所有o在u之前的最长子列,答案为两个最长子列的和, 设MAXa,MAXe,MAXi分别表示前k个字符中以a,e,i结尾的最长子列长度, 则 MAXa=MAXa+1,s[k]=='a';         MAXe=max(MAXa,MAXe)+1,s[k]=='e';             MAXi=max(MAXa,MAXe,MAXi)+1,s[k]=='i'; 同理,MAXo,MAXu分别表示前k个字符中以o,u结尾的最长子列长度, 则 MAXo=MAXo+1,s[k]=='o';         MAXu=max(MAXo,MAXu)+1,s[k]=='u'; 最后结果为MAXi+MAXu
#include
#include
#include
using namespace std;int max(int a,int b,int c){ if(a
View Code

 

 

转载于:https://www.cnblogs.com/ACRykl/p/8450054.html

你可能感兴趣的文章
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
【复制】slave筛选复制之二(create/drop table语句)
查看>>
Movie Store OpenCart 自适应主题模板 ABC-0249
查看>>
mytop-MySQL监控工具
查看>>
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
codevs——1267 老鼠的旅行(棋盘DP)
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>
C++实现链式堆栈
查看>>
nagios总结
查看>>
beta版本冲刺六
查看>>
Cocos Creator 资源加载(笔记)
查看>>
rpc框架实现(持续更新)
查看>>