#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<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int max(int a,int b,int c)
{if(a<b) a=b;if(a<c) a=c;return a;
}
char s[2000000];
int main()
{scanf("%s",s);int k=0;int MAXa=0,MAXe=0,MAXi=0,MAXo=0,MAXu=0;while(s[k]){if(s[k]=='a')MAXa++;else if(s[k]=='e')MAXe=max(MAXa,MAXe)+1;else if(s[k]=='i')MAXi=max(MAXa,MAXe,MAXi)+1;else if(s[k]=='o')MAXo++;elseMAXu=max(MAXo,MAXu)+1;k++;}printf("%d\n",MAXu+MAXi);return 0;
}

View Code


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

hihoCoder1690 (动态规划)相关推荐

  1. Hihocoder1690 AEIOU (动态规划)

    分析 题目要求: 1. 所有的a都在e和i之前,所有的e都在i之前: 2. 所有的o都在u之前. 仔细分析发现如下特点: * 其实a.e.ia.e.ia.e.i这三个字符和o.uo.uo.u这两个字符 ...

  2. 伍六七带你学算法 动态规划 ——不同路径

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

  3. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  4. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  5. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  6. 2016.4.2 动态规划练习--讲课整理

    1.codevs1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿 ...

  7. 算法设计与分析第4章 动态规划(二)【DP序列问题】

    第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...

  8. 算法设计与分析第4章 动态规划(一)【背包问题】

    第3章动态规划(一)[背包问题] 基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的.不同子问题的数目常常只有多项式量级.在用 ...

  9. ADPRL - 近似动态规划和强化学习 - Note 7 - Approximate Dynamic Programming

    Note 7 - 近似动态规划 Approximate Dynamic Programming 7. 近似动态规划 (Approximate Dynamic Programming) 7.1 近似架构 ...

最新文章

  1. golang字符串处理
  2. java中String类是什么_Java中的String类
  3. 剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)
  4. firefox浏览器中silverlight无法输入问题
  5. 什么是springboot框架
  6. 运用贪心思想解决跳跃游戏
  7. 计算机网络 socket阻塞非阻塞
  8. 第26月第13天 hibernate导包
  9. 买二手房已经过户等待银行放款,应该没有变数了吧?
  10. Tomcat报错:The server does not support version 3.0 of the J2EE Web module specification
  11. Neural Style Transfer
  12. ArcFace 论文阅读及 pytorch 实现
  13. html网页中使用mock,前端工具mock的使用 - 造数据模拟网络请求
  14. 空转工具推荐 | 10款空间转录组去卷积工具的综合比较
  15. win10删除多余账户_Win10系统如何删除账户?Win10系统删除账户的方法
  16. Ubuntu操作系统漏洞扫描和分析
  17. 深度报道 第1个从太空发回的LoRa信号(含视频)
  18. 手机屏幕分辨率:物理分辨率和逻辑分辨率
  19. 蛊惑者马云发家史(曾推毛氏运动唐僧团队)三
  20. 串口转网络DTU工具软件

热门文章

  1. Netty技术细节源码分析-Recycler对象池原理分析
  2. web mysql数据库的持久连接_JavaWeb连接数据库MySQL的操作技巧
  3. 线条边框简笔画图片大全_简笔画猪 手抄报图片边框版式大全
  4. 利用display属性写的遮罩层
  5. 用c语言递归函数实现焚天塔的过程,梵天塔问题.PPT
  6. Dubbo源码分析系列-Dubbo的动态编译原理
  7. 实战:采⽤Sharding-JDBC实现订单表的(两主四从) 分库分表 和 读写分离
  8. Spring Security相关
  9. 使用jps来查看虚拟机状态
  10. 关于@Mapper注解的几个问题