首页 > 其他分享 >P1136 迎接仪式

P1136 迎接仪式

时间:2024-12-06 12:24:31浏览次数:8  
标签:const int max 迎接 仪式 P1136

P1136 迎接仪式

动态规划好题

状态设计:

我们认为z是1,j是0,产生贡献的是01对

我们用状态 \(f[i][j][k][0/1]\) 表示考虑到第 \(i\) 位,进行了 \(j\) 次将1变成0的操作和 \(k\) 次将0变成1的操作,操作过后第 \(i\) 位为 \(0/1\) 时的答案

状态转移:

然后我们就有方程:

\(a_i=1:\)

\( f[i][j][k][1]=max(f[i-1][j][k][0]+1,f[i-1][j][k][1]); \)

$ f[i][j][k][0]=max(f[i-1][j-1][k][0],f[i-1][j-1][k][1]);
$

\(a_i=0:\)

\( f[i][j][k][0]=max(f[i-1][j][k][0],f[i-1][j][k][1]); \)

\( f[i][j][k][1]=max(f[i-1][j][k-1][0]+1,f[i-1][j][k-1][1]); \)

当且仅当 \(j=k\) 时答案合法

然后这题就做完了

Code:

#include<bits/stdc++.h>
const int N=505;
const int K=105;
const int inf=1e9;
using namespace std;
int f[N][K][K][2],a[N];
int n,m,ans;
char c[N];
void init()
{
	for(int i=0;i<N;i++)for(int j=0;j<K;j++)for(int k=0;k<K;k++)f[i][j][k][0]=f[i][j][k][1]=-inf;
}
void work()
{
	init();
	cin>>n>>m;
	scanf("%s",c+1);
	f[0][0][0][1]=0;
	for(int i=1;i<=n;i++)
	{
		bool now = c[i]=='z';
		for(int j=0;j<=m;j++)
		{
			for(int k=0;k<=m;k++)
			{
				//01	
				//1:
				if(now)
				{
					f[i][j][k][1]=max(f[i-1][j][k][0]+1,f[i-1][j][k][1]);
					if(j)f[i][j][k][0]=max(f[i-1][j-1][k][0],f[i-1][j-1][k][1]);
				}
				//0:
				else
				{
					f[i][j][k][0]=max(f[i-1][j][k][0],f[i-1][j][k][1]);
					if(k)f[i][j][k][1]=max(f[i-1][j][k-1][0]+1,f[i-1][j][k-1][1]);
				}
			}
		}
	}
	for(int i=1;i<=m;i++)ans=max({ans,f[n][i][i][0],f[n][i][i][1]});
	printf("%d",ans);
}
int main()
{
	//freopen("welcome.in","r",stdin);
	//freopen("welcome.out","w",stdout);
	work();
}

标签:const,int,max,迎接,仪式,P1136
From: https://www.cnblogs.com/LG017/p/18590490

相关文章

  • 题解:P11362 [NOIP2024] 遗失的赋值
    这里写一个我在考场上差点想出来的、比较另类的做法。若\(\existsc_i=c_j(i\nej),d_i\ned_j\),则答案显然为\(0\)。否则,我们可以将序列\(x\)中的数分为已确定和未确定两类。设\(f_0(i)\)为当\(x_i\)未确定时前\(i-1\)个二元限制的方案数,\(f_1(i)\)为当\(x_i\)确......
  • [luoguP11361/NOIP2024] 编辑字符串
    题意给出两个0/1字符串,每个字符串有一些位置被标记,无法交换。求通过任意多次的交换相邻元素操作能够使两个字符串最多多少位置相同。sol一道贪心题。显然交换相邻的操作可以使该字符串可以交换的一段任意排列。由于不同位置的贡献最大只为\(1\),因此在任何位置贡献都没有区......
  • P11361 [NOIP2024] 编辑字符串
    题目大意详细题目传送门两个\(01\)串,可以对两个串中任意相邻的字符进行交换,没有代价可以进行任意多次。可是两个串有的位置的字符是定死的,无法被交换,求任意次操作后最多让两个串的多少个位置\(01\)相等。即\(\sum[a_i=b_i]\)。\(n\leq10^5\)思路首先根据冒泡排序的性......
  • 洛谷P11361 [NOIP2024] 编辑字符串
    ProblemSolve首先任意更换相邻元素任意次等同于在可交换范围内随便移动这题是求最优解,直观想到DP和贪心,但是容易反应过来本题DP的话很难做到无后效性,且状态较多,故尝试贪心不难发现,我们从左往右遍历的某个时刻进行交换后所得到的局部最优解总是答案的一种方案的一部分原因......
  • 迎接国庆旅游热潮,火山引擎数据飞轮助力景区数智化升级
    随着人们生活水平的提高和旅游消费观念的转变,国庆假期成为人们出行旅游的黄金时段。同程旅行发布的报告显示,北京、杭州、重庆、上海、南京、成都等城市仍是“十一”假期国内热门的目的地,而一些新兴的宝藏旅游目的地如新疆阿勒泰、云南迪庆、山东威海等也被挖掘出来,成为假期旅游......
  • 【大模型开发】 迎接AI新时代:Qwen2.5发布,超越LLaMA3!如何通过一键API调用不同模型?(附源
    迎接AI新时代:Qwen2.5发布,超越LLaMA3!如何通过一键API调用不同模型?人工智能领域迎来了新的突破,阿里巴巴近期发布了全新的Qwen2.5模型系列,凭借其72B参数的核心模型,不仅在参数量上显著优化,还成功超越了LLaMA3(405B),在多个自然语言处理和代码生成任务中取得了卓越的表现。Qwen......
  • 【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成
    生日视频制作教程奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程AE模板套用改图文教程↓↓:怎么如何做的【生日视频制作】奔驰梅赛德斯大奔提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模板】......
  • 【生日视频制作】劳斯莱斯提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特
    生日视频制作教程劳斯莱斯提车交车仪式感视频拍照AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程怎么如何做的【生日视频制作】劳斯莱斯提车交车仪式感视频拍照AE模板修改文字软件一键生成器教程特效素材【AE模板】生日视频制作步骤:下载AE模板安装AE软件......
  • 合宙Air201模组LuatOS:点灯仪式
    上一期教程,我们学习了合宙Air201helloworld,很多小伙伴有了初步了解,接下来,推出第二篇:你将体验工程师的重要仪式——点灯!Air201点灯教程  合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。......
  • 生成式 AI 和 RAG 代理及应用程序:已准备好迎接黄金时段还是仍处于原型阶段
    高盛发布了一份题为《GENAI:花费太多,收益太少?》的报告,对生成式AI的前景表示担忧。该报告总结了领先行业在一年多的时间内花费大量资金将GenAI投入生产但收效甚微的观察结果。很明显,GenAI与传统AI一样,在从原型和演示扩展到可能直接影响实际业务成果的生产系统时面临着重......