博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Topcoder SRM 698 Div1 250 RepeatString(dp)
阅读量:6171 次
发布时间:2019-06-21

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

题意

[题目链接]这怎么发链接啊。。。。。

005S5cb6ly1fw4k7aw9gbj30jm0b40u7.jpg

Sol

枚举一个断点,然后类似于LIS一样dp一波

这个边界条件有点迷啊。。fst了两遍。。。

#include
using namespace std;const int MAXN = 1e5 + 10, INF = 1e9 + 7;inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f;}int N, f[101][101];class RepeatString{public: int solve(int pos, string s) { string a, b; a += '.'; b += '*'; memset(f, 0x3f, sizeof(f)); for(int i = 0; i < pos; i++) a += s[i]; for(int i = pos; i < N; i++) b += s[i]; int la = a.length() - 1, lb = b.length() - 1; f[0][0] = 0; for(int i = 0; i <= la; i++) f[i][0] = i; for(int i = 0; i <= lb; i++) f[0][i] = i; for(int i = 1; i <= la; i++) { for(int j = 1; j <= lb; j++) { f[i][j] = min(f[i - 1][j] + 1, f[i][j - 1] + 1); f[i][j] = min(f[i][j], f[i - 1][j - 1] + (a[i] != b[j])); } } return f[la][lb]; } int minimalModify(string s) { N = s.length(); int ans = N; for(int i = 0; i < N; i++) ans = min(ans, solve(i, s)); return ans; }};int main() { string s; cin >> s; cout << RepeatString().minimalModify(s);}/*pkafkbeabccfjejkdgkaatcedaocgmecaapakfvbfgefr*/

转载地址:http://dftba.baihongyu.com/

你可能感兴趣的文章
jquery click嵌套 事件重复注册 多次执行的问题
查看>>
Dev GridControl导出
查看>>
开始翻译Windows Phone 8 Development for Absolute Beginners教程
查看>>
Python tablib模块
查看>>
站立会议02
查看>>
Windows和Linux如何使用Java代码实现关闭进程
查看>>
0428继承性 const static
查看>>
第一课:从一个简单的平方根运算学习平方根---【重温数学】
查看>>
NET反射系统
查看>>
Oracle12C本地用户的创建和登录
查看>>
使用JS制作一个鼠标可拖的DIV(一)——鼠标拖动
查看>>
HDU problem 5635 LCP Array【思维】
查看>>
leetcode10. 正则表达式匹配
查看>>
redis常用命令--zsets
查看>>
springcloud--Feign(WebService客户端)
查看>>
网络攻击
查看>>
sorting, two pointers(cf div.3 1113)
查看>>
Scala并发编程【消息机制】
查看>>
win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
查看>>
AngularJS-01.AngularJS,Module,Controller,scope
查看>>