当前位置:网站首页>字母交换--字符串dp
字母交换--字符串dp
2022-08-02 10:55:00 【WAWA源】
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include <queue>
using namespace std;
#define int long long
const int N = 200010;
int n,k;
string s;
vector<int>vec[30];
int f[1010][1010];
int cal(vector<int> vec)
{
int n=vec.size();
memset(f,0,sizeof f);
for(int i=0;i+1<n;i++)
f[i][i+1]=vec[i+1]-vec[i]-1;
for(int i=2;i<n;i++)
{
for(int j=0;j+i<n;j++)
{
int l=j,r=j+i;
f[l][r]=f[l+1][r-1]+abs(vec[r]-vec[l])-(r-l);
}
}
int res=0;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(f[i][j]<=k)res=max(j-i+1,res);
return res;
}
signed main()
{
cin>>s>>k;
for(int i=0;i<s.size();i++)
vec[s[i]-'a'].push_back(i);
int res=0;
for(int i=0;i<26;i++)res=max(res,cal(vec[i]));
cout<<res<<'\n';
}
边栏推荐
猜你喜欢
记一次mysql查询慢的优化历程
ECCV22|PromptDet:无需手动标注,迈向开放词汇的目标检测
After 21 years of graduation, I switched to software testing. From 0 income to a monthly salary of over 10,000, I am really lucky...
阿里CTO程立:阿里巴巴开源的历程、理念和实践
STM32+MPU6050设计便携式Mini桌面时钟(自动调整时间显示方向)
爆款视频怎么做?这里或许有答案!
Verilog's random number system task----$random
FPGA手撕代码——CRC校验码的多种Verilog实现方式 (2021乐鑫科技数字IC提前批代码编程)
保姆级教程:写出自己的移动应用和小程序(篇二)
Hub and Spoke配置案例
随机推荐
LeetCode每日一练 —— 20. 有效的括号
多线程之生产者与消费者
LayaBox---TypeScript---Decorator
保姆级教程:写出自己的移动应用和小程序(篇二)
软件测试的基本理论知识(软件测试面试基础知识)
“纯C”实现——三子棋小游戏
MySQL百万数据优化总结 一
Deep Learning 100 Examples - Convolutional Neural Network (CNN) for mnist handwritten digit recognition
MapStruct
字节跳动软件测试岗,收到offer后我却拒绝了~给面试的人一些忠告....
注意力机制
LayaBox---TypeScript---Iterator and generator
如何安装dosbox(pycharm详细安装教程)
2022年8月初济南某外包公司全栈开发面试题整理
ES2020-23简单易懂又实用的精选特性讲解 日常开发必备干货!
sqlmap安装教程用w+r打开(sqlyog安装步骤)
DirectX修复工具增强版「建议收藏」
4年手工测试被应届生取代了,用血与泪的教训给xdm一个忠告,该学自动化了...
如何在技术上来保证LED显示屏质量?
FPGA手撕代码——CRC校验码的多种Verilog实现方式 (2021乐鑫科技数字IC提前批代码编程)