AcWing:5406. 松散子序列

标签:DP

描述

给定一个仅含小写字母的字符串 s,假设 s 的一个子序列 t 的第 i 个字符对应了原字符串中的第 pi 个字符。

我们定义 s 的一个松散子序列为:对于 i>1 总是有 pi−pi−1 ≥ 2。

设一个子序列的价值为其包含的每个字符的价值之和(a∼z 分别为 1∼26)。

求 s 的松散子序列中的最大价值。

输入格式

输入一行包含一个字符串 s。

输出格式

输出一行包含一个整数表示答案。

数据范围

对于 20% 的评测用例,|s|≤10;
对于 40% 的评测用例,|s|≤300;
对于 70%的评测用例,|s|≤5000;
对于所有评测用例,1≤|s|≤10^6,字符串中仅包含小写字母。

输入样例:
azaazaz
输出样例:
78

 讲讲思路

   因为是要至少隔一个才可以取,不能连续取,那么只要是当前取,就拿上次不取的值加上这次的值即可,最后要记得比较,因为要看最后取或不取的max.

以下是AC代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
/* 定义 */
const int N = 1e6 + 10;
/* dp数组 */
int f[N][2];

int main()
{
    /* 读取 */
    string s;
    cin >> s;
    
    /* 初始化dp数组 */
    /* 0是不取,1是取 */
    f[0][0] = 0;
    f[0][1] = int(s[0] - 'a' + 1);
     
    /* 核心 */
    /* 由于不能取连续的,所以取只能拿上次没取的 */
    for (int i = 1; i < s.size(); i ++ )
    {
            f[i][0] = max(f[i - 1][0] , f[i - 1][1]);
            f[i][1] = f[i - 1][0] + int(s[i] - 'a' + 1);
    }
    
    /* 输出比较 */ 
    cout << max(f[s.size() - 1][0] , f[s.size() - 1][1]);
    return 0; //好习惯捏
}

相关推荐

  1. AcWing:5406. 松散序列

    2024-01-13 11:36:01       47 阅读
  2. 松散序列(c++实现)

    2024-01-13 11:36:01       36 阅读
  3. AcWing 5460. 连续整数序列【哈希dp】

    2024-01-13 11:36:01       59 阅读
  4. 蓝桥杯2023年-松散序列(dp)

    2024-01-13 11:36:01       35 阅读
  5. Acwing---2816. 判断序列

    2024-01-13 11:36:01       56 阅读
  6. AcWing 5407. 管道(二分,区间合并)

    2024-01-13 11:36:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 11:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 11:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 11:36:01       82 阅读
  4. Python语言-面向对象

    2024-01-13 11:36:01       91 阅读

热门阅读

  1. 鸿蒙系列--Http

    2024-01-13 11:36:01       61 阅读
  2. 常见的HTTP接口超时问题出现原因及解决办法

    2024-01-13 11:36:01       68 阅读
  3. Elasticsearch本地单机配置以及php组件使用记录

    2024-01-13 11:36:01       54 阅读
  4. Github Copilot 的使用方法和快捷键

    2024-01-13 11:36:01       86 阅读
  5. linux线程

    2024-01-13 11:36:01       48 阅读
  6. 初始化网络的权重和偏置的方法有哪些?

    2024-01-13 11:36:01       55 阅读
  7. erp项目基本概念理解

    2024-01-13 11:36:01       50 阅读
  8. SQL 语言详解

    2024-01-13 11:36:01       53 阅读
  9. JVM相关问题及答案(2024)

    2024-01-13 11:36:01       45 阅读
  10. 微服务治理:为什么要分析微服务的依赖关系?

    2024-01-13 11:36:01       53 阅读
  11. Qt中的多线程

    2024-01-13 11:36:01       49 阅读
  12. 【菜鸡常见网络问题汇总】之:网络丢包

    2024-01-13 11:36:01       62 阅读