CodeForces 17C Balance (DP)

该博客介绍了CodeForces 17C题目的解法,涉及动态规划(DP)策略。题目要求在给定的由'a', 'b', 'c'组成的字符串上进行特定操作,使得字符数量最多相差1,这样的字符串称为合法串。博主提出通过压缩字符串并利用状态转移方程求解,利用完全背包思想更新动态规划数组,最终得出合法串的数量。" 12708829,1067237,数字图像处理学习笔记,"['图像处理', 'MATLAB', '数字信号处理']
摘要由CSDN通过智能技术生成
题目类型  DP

题目意思
给出一个最多150字符长的只有a或b或c组成的字符串
对于每个操作可以把前面一个字符变成后面一个字符或者把后面的一个字符变成前面一个字符 
即可以执行赋值语句 str[i+1] = str[i]; 或者 str[i] = str[i+1];
如果原 字符串在执行若干次操作后变成一个a,b,c的字符数量相互不超过1的 字符串, 那么称得到的串为一个合法串
问合法串有多少个

例如输入字符串 aaacb 其中a有3个,b有1个,c有1个 3-1>1 不合法 
但是可以把  第3个a变成 c -> aaccb a有2个,b有1个,c有2个, 相互之间的数量都不超过1 所以 aaccb 就是一个合法的串

解题方法
假设输入的字符串是 A, 字符串 A'是 A串的相同字符压缩成一个后的结果 (例如 aacbbb 压缩成 acb)
假设一个合法串B, B'是B压缩后的字符串 
这时会发现 如果 B 是由 A 经过若干次操作得到的结果, 那么 B' 是 A'的一个子序列
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值