首页 > 其他分享 >切割 01 串 2.0

切割 01 串 2.0

时间:2024-07-20 20:54:11浏览次数:18  
标签:01 切割 int 550 2.0 C1 C0

#### 题目描述

jackle 在校赛的时候出过一道 "切割 01 串" 的题目,如今他又出了一道切割 01 串的题目:

给定一个长度为 n 的 01 串,定义如下操作为一次 "切割":

将长度大于 1 的字符串分割为两个非空的连续字串,记分割出来的左侧字串 a 中 0 的出现次数为 C0,右侧字串 b 中 1 出现的次数为 C1,需要满足L≤|C0−C1|≤R。

你每次切割完,都会得到两个新 01 串,你可以继续选择这些已经被你切出来的 01 串做切割,只要满足切割条件。

jackle 想问你最多可以切割多少次?

#### 输入描述:

第一行输入 3 个整数,n (1≤n≤500),L,R (0≤L≤R≤500),分别表示字符串长度,和题目中的两个参数。

第二行输入 1 个长度为 n 的 01 串。

#### 输出描述:

输出最多能切割多少次?

输入

6 2 3
011011

输出

3

说明

其中一种切割次数最多的切法如下:
第一次切割可以切:0 ∣ 11011,然后选择 11011 这个串继续做切割。
第二次切割可以切:1 ∣ 1011,然后选择 1011 这个串继续做切割。
第三次切割可以切:1 ∣ 011。
#include<bits/stdc++.h>
using namespace std;
int n, l, r;
string s;
int c0[550], c1[550],dp[550][550];
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin>>n>>l>>r;
	cin>>s;
	s = " " + s;
	for (int i = 1; i <= n; i++)
    {
		c0[i] = c0[i - 1];
		c1[i] = c1[i - 1];
		if (s[i] == '1') c1[i]++;
		else c0[i]++;
	}
	for (int len = l+1; len<=n; len++)
    {
		for (int i = 1; i+len-1<=n; i++)
        {
			int m = i + len - 1;
			for (int j = i; j<=m-1; j++)
            {
				int C0 = c0[j] - c0[i - 1];
				int C1 = c1[m] - c1[j];
				if (abs(C0 - C1) >= l && abs(C0 - C1) <= r)
                {
					dp[i][m] = max(dp[i][m], dp[i][j] + dp[j + 1][m] + 1);
				}

			}
		}
	}
	cout<<dp[1][n]<<endl;
	return 0;
} 

标签:01,切割,int,550,2.0,C1,C0
From: https://blog.csdn.net/2301_80443784/article/details/140577291

相关文章

  • [SDOI2011] 拦截导弹
    这是CDQ分治优化1D/1D动态规划的模板题(1D/1D动态规划的概念见OI-wiki)一般来说,优化的1D/1D/动态规划,在转移的时候是由不等式作为条件的,所以可以像这样转化为三维偏序用线段树进行如下维护:1.维护区间最大值2.查询区间最大值的某一数组的和代码见下(一定要学会将数组翻转的操作)#......
  • WebGoC题解(11) 627.传声(2019NHOI小乙)
    题目描述 小C节日旅游来到一个农场。农场主John和n个奶牛站在一条水平线上。牛的传递消息是依靠“吼”,牛的吼叫声最远可以传递的距离是50。农场主John首先通知最左边的第一条奶牛(一定会通知),然后奶牛就开始向后吼叫,后面的奶牛如果能听到(和前面吼叫的奶牛距离不超过50),就继续向......
  • 新产品,基于1200 V 碳化硅的功率模块NXH010P120M3F1PTG NVXK2PR80WXT2 NVXK2VR80WDT2(产
    1、NXH010P120M3F1PTG是一款功率模块,在F1封装中包含10mohm/1200VSiCMOSFET半桥和一个氧化铝(AL2O3)DBC热敏电阻。SiCMOSFET开关采用M3S技术,由18V-20V栅极驱动。规格:配置:Half-Bridge下降时间:15ns高度:12.35mmId-连续漏极电流:105A长度:63.3mm最大工作温度:+150°C......
  • Java基础语法01-运算符&流程控制语句If
    Java基础语法1.运算符1.1算术运算符(理解)1.1.1运算符和表达式运算符:对常量或者变量进行操作的符号表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。​不同运算符连接的表达式体现的是不同类型的表达式。举例说明:inta=10;intb=2......
  • 01HTML标签(开发软件为vscode)
     1.网站HTML篇无论是在什么生态中进行开发,我们必须必须学习的基础语言之一就是HTML结构语言.1)站点的创建创建一个站点,通常有img文件夹,css文件夹,js文件夹,html文件夹;和一个页面文件:index.html文件。2)快速创建页面结构快捷键:shift+!+tab快捷键:html:53)结构注释语句快......
  • 在Spring Boot中实现OAuth2.0认证
    在SpringBoot中实现OAuth2.0认证大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!OAuth2.0是一种用于授权的协议,它使得用户可以授权第三方应用程序访问他们在某服务提供商上的资源,而无需共享他们的凭据。SpringBoot提供了对OAuth2.0的原生支持,可以方......
  • P5520 [yLOI2019] 青原樱
    原题链接题解设花为1,花盆为0,我们先确保花之间有空隙,即\(1010....0101\)接下来再插入\(n-m-(m-1)\)个花盆进入1与1之间则有\(C_{n-m+1}^{m}\)种插法(相当于m个黑球,n个白球有几种排列方法)再乘上\(A_m\),即花与花之间排列所以答案为\(A_{n-m+1}^m\)注意,什么是A排......
  • P4588 [TJOI2018] 数学计算
    原题链接题解由于模拟会爆longlong,所以用线段树维护每次操作的值,初始每次操作的值均为1操作一令对应节点变为m操作二令对应节点变为1返回整棵树的值(相乘)code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;lltree[400005];llq,mod;voidup......
  • C++生化危机2.0.yl.3已更新
    本版本修复了一个BUG,邻居家无法进入已修复一些小BUG也修复完成(作者体验游戏时发现的)下载链接:生化危机2.0.yl.3.rar-蓝奏云代码如下(建议下载,因为rar解压包内内容更全):#include<bits/stdc++.h>#include<windows.h>#include<time.h>#include<conio.h>usingnamespacestd......
  • 微软研发致胜策略 01:尊定基础
    这是一本老书,作者SteveMaguire在微软工作期间写了这本书,英文版于1994年发布。我们看到的标题是中译版名字,英文版的名字是《DebuggingtheDevelopmentProcess》,这本书详细阐述了软件开发过程中的常见问题及其解决方案,强调团队合作、项目管理和开发流程的优化。该书成......