当前位置: 首页 > ai >正文

问题 D: 学 DP 导致的

目描述

DP 的一个经典应用便是求最长上升子序列。本题中,子序列指的是删除若干个字符(可以是 0 个或全部删除)后,保持其他字符的原有顺序得到的新字符串。
给出一个小写字母构成的字符串 S,将 S 拼接 k 次后会得到一个新字符串 S'。
求 S' 最长的子序列长度,使得子序列中字符的 ASCII 码严格递增。

输入

本题有多组数据。 输入的第一行有一个正整数 T(1≤T≤20),表示数据组数。
对于每组数据,输入一行,包括一个字符串 S(1≤∣S∣≤100) 和一个正整数 k(1≤k≤10100),含义同题目描述。

输出

对于每组数据,输出一行一个正整数,表示答案。

样例输入 Copy
1
yummy 2
样例输出 Copy
3
提示

【样例解释】
S' 为 yummyyummy,最长的符合题意的子序列为 muy。

学DP导致的

字符串怎么比大小给我忘记了,寄 

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){string s,k,a="";cin>>s>>k;if(k.length()>2||(k.length()==2&&k>="26")){int c[30]{0},ans=0;for(auto i:s)c[i-'a']=1;for(int i=0;i<26;++i){if(c[i])ans++;}cout<<ans<<'\n';return;}int n=stoi(k),c[10009],l=0;for(int i=0;i<n;++i)a+=s;for(int i=0;i<a.length();++i){if(l==0)c[l++]=a[i]-'a';else{int f=-1;for(int j=l-1;j>=0;--j){if(c[j]>=(a[i]-'a'))f=j;}if(f==-1)c[l++]=a[i]-'a';else c[f]=a[i]-'a';}//for(int i=0;i<l;++i){cout<<char(c[i]+'a');}cout<<'\n';}//for(int i=0;i<l;++i){cout<<char(c[i]+'a');}cout<<l<<'\n';return;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}

http://www.xdnf.cn/news/10468.html

相关文章:

  • Camera相机人脸识别系列专题分析之十:人脸特征检测FFD算法之低功耗libvega_face.so人脸识别检测流程详解
  • 超标量处理器设计6-指令解码
  • SPA-RL:通过Stepwise Progress Attribution训练LLM智能体
  • 第十一讲 | 多态
  • ∑ 1/n 调和级数 是 发散的
  • 解决 Win11 睡眠后黑屏无法唤醒的问题
  • C语言 — 文件
  • 初学者如何微调大模型?从0到1详解
  • 串口通信技术及USART应用研究
  • IDEA PyCharm 等工具如何同时打开多个窗口
  • Redis笔记
  • 英一真题阅读单词笔记 06年
  • 系统性学习C语言-第十三讲-深入理解指针(3)
  • 使用langchain实现五种分块策略:语义分块、父文档分块、递归分块、特殊格式、固定长度分块
  • 计算机网络技术
  • 【PostgreSQL 05】PostgreSQL扩展开发实战:从自定义函数到插件开发的完整指南
  • C# 类和继承(构造函数的执行)
  • 数据结构测试模拟题(3)
  • 【STM32开发板】接口部分
  • 象棋里的卧槽马、侧面虎、金钩马的方位与解析
  • 13.三种低功耗和RTC实时时钟
  • CppCon 2014 学习: C++ on Mars
  • Go中MAP底层原理分析
  • Python打卡第42天
  • 建筑兔零基础python自学记录102|Beautiful Soup库(1)-15
  • JDBC连不上mysql:Unable to load authentication plugin ‘caching_sha2_password‘.
  • 在线音乐平台测试报告
  • Go Channel 详解
  • 怎样在PyQt5中使用信号与槽机制?
  • logstash 安装