【Gym 101775】 H. H. Mr. Panda and Birthday Song(动态规划,分类讨论)

LwIP 之六 详解内存池(memp.c/h)动态内存管理策略 对于嵌入式开发来说,内存管理及使用是至关重要的,内存的使用多少、内存泄漏等时刻需要注意!合理的内存管理策略将从根本上决定内存分配和回收效率,最终决定系统的整体性能。LwIP 就提供了 动态内存堆管理(heap)和 动态内存池管理(pool)两种简单却又高效的动态内存管理机制。 阅读详情

https://codeforc.es/gym/101775/problem/H

题意

  1. 连续出现元音长度 >= x || 连续出现辅音长度 >= y ,输出DISLIKE。
  2. 连续出现元音长度 < x && 连续出现辅音长度 <y,输出LIKE。
  3. 即满足1又满足2,输出SURPRISE。

题解

对于1,直接贪心求最大的连续元音/辅音次数,即遇到?时,元/辅音都+1。

对于2,采用dp。
0: 元音,1:辅音
设 d p [ i ] [ 0 / 1 ] dp[i][0/1] dp[i][0/1]:到第i位时连续的元/辅音最小长度。
状态转移:

  1. ch == 元音
    d p [ i ] [ 0 ] = d p [ i − 1 ] [ 0 ] + 1 , d p [ i ] [ 1 ] = 0 dp[i][0] = dp[i-1][0]+1,dp[i][1] = 0 dp[i][0]=dp[i−1][0]+1,dp[i][1]=0
  2. ch == 辅音
    d p [ i ] [ 1 ] = d p [ i − 1 ] [ 1 ] + 1 , d p [ i ] [ 0 ] = 0 dp[i][1] = dp[i-1][1]+1,dp[i][0] = 0 dp[i][1]=dp[i−1][1]+1,dp[i][0]=0
  3. ch == ?
    如果dp[i-1][0]+1 < x,那么便可以把?变成元音
    d p [ i ] [ 0 ] = d p [ i − 1 ] [ 0 ] + 1 , d p [ i ] [ 1 ] = 0 dp[i][0] = dp[i-1][0]+1,dp[i][1] = 0 dp[i][0]=dp[i−1][0]+1,dp[i][1]=0
    否则
    只能是辅音 d p [ i ] [ 1 ] = 1 dp[i][1] = 1 dp[i][1]=1
    如果dp[i-1][1]+1 < y,那么便可以把?变成辅音
    d p [ i ] [ 1 ] = m i n ( d p [ i ] [ 1 ] , d p [ i − 1 ] [ 1 ] + 1 ) , d p [ i ] [ 0 ] = 0 dp[i][1] = min(dp[i][1],dp[i-1][1]+1),dp[i][0] = 0 dp[i][1]=min(dp[i][1],dp[i−1][1]+1),dp[i][0]=0
    否则
    只能是元音 d p [ i ] [ 0 ] = 1 dp[i][0] = 1 dp[i][0]=1

只要遇到 d p [ i ] [ 1 ] &gt; = y dp[i][1] &gt;= y dp[i][1]>=y && d p [ i ] [ 0 ] &gt; = x dp[i][0] &gt;= x dp[i][0]>=x,那就不可行。

代码

#include <bits/stdc++.h>
using namespace std;
#define FOR0(a,b) for(int i = a; i < b; ++i)
#define FORE(a,b) for(int i = a; i <= b; ++i)
typedef long long ll;
typedef pair<int,int> pii;
/*
0: 元音 1: 辅音
dp[i][0/1]:  到第i位为止连续 元音/辅音 最小的个数

if(ch == 元音) {
	dp[i][0] = dp[i-1][0]+1;
	dp[i][1] = 0;
}
if(ch == 辅音) {
	dp[i][1] = dp[i-1][1]+1;
	dp[i][0] = 0;
}
if(ch == ?) {
	if(dp[i-1][0]+1 < x) {
		dp[i][0] = dp[i-1]+1
		dp[i][1] = 0;
	} else 
		dp[i][1] = 1;
	if(dp[i-1][1]+1 < y) {
		dp[i][1] = min(dp[i][1],dp[i-1][1]+1);
		dp[i][0] = 0;
	} else 
		dp[i][0] = 1;
}
*/
const int maxn = 1e6+5;
char s[maxn];
int dp[maxn][2];

bool ok(char ch) {
	return ch == 'a' || ch == 'e' || ch == 'i' || ch =='o' || ch == 'u';
}
int main() {
	int T;
	scanf("%d", &T);
	for(int kas = 1; kas <= T; ++kas) {
		scanf("%s", s+1);
		int n = strlen(s+1);
		int x,y;
		scanf("%d%d", &x, &y);
		int yuan = 0, fu = 0;
		int my = 0, mf = 0;
		bool dislike = false, like = true;
		for(int i = 1; i <= n; ++i) {
			if(s[i] == '?') {
				yuan++; fu++;
			} else if(ok(s[i])) {
				yuan++; fu = 0;
			} else {
				fu++; yuan = 0;
			}
			my = max(my,yuan);
			mf = max(mf,fu);
		}
		if(my >= x || mf >= y) dislike = true;
		memset(dp, 0x3f3f3f3f,sizeof dp);
		dp[0][0] = dp[0][1] = 0;
		for(int i = 1; i <= n; ++i) {
			if(s[i] == '?') {
				if(dp[i-1][0]+1 < x) {
					dp[i][0] = dp[i-1][0]+1;
					dp[i][1] = 0;
				} else 
					dp[i][1] = 1;
				if(dp[i-1][1]+1 < y) {
					dp[i][1] = min(dp[i][1],dp[i-1][1]+1);
					dp[i][0] = 0;
				} else 
					dp[i][0] = 1;
			} else if(ok(s[i])) {
				dp[i][0] = dp[i-1][0]+1;
				dp[i][1] = 0;
			} else {
				dp[i][1] = dp[i-1][1]+1;
				dp[i][0] = 0;
			}
			if(dp[i][0] >= x || dp[i][1] >= y) {
				like = false;
				break;
			}
		}
		printf("Case #%d: ", kas);
		if(dislike && like) 
			puts("SURPRISE");
		else if(dislike)
			puts("DISLIKE");
		else if(like) 
			puts("LIKE");
	}
	return 0;
}
Dify插件实战:实时渲染AI生成的HTML/SVG/Canvas代码 在现代Web开发与AI应用集成中,前端渲染技术是实现动态内容展示的核心。其原理在于浏览器引擎解析HTML、CSS、JavaScript等代码,并将其转换为可视化的用户界面。这项技术的价值在于极大提升了开发效率与用户体验,允许开发者快速构建和迭代交互式应用。在AI应用开发领域,尤其是大语言模型(LLM)集成场景,如何将模型生成的**结构化代码**(如描述UI的HTML或数据图表的SVG)实时转化为可视化组件,成为一个关键需求。这直接关系到**Dify**等低代码AI平台能否提供流畅的、所见即所得的交互体验。本 阅读详情

相关推荐

LDPC码译码原理——概率公式推导

怎么说呢,一直以来都想写一下博客。近半年多来我一直在学习LDPC码译码上的东西,主要是在FPGA实现上的,所以这次想写一些关于这方面的内容,包括译码的原理、仿真以及实现。(当然是基于准循环LDPC码上实现的)不过呢,我写这个的初衷是为了让初学者理解入门用的,而不是在大牛面前班门弄斧,有错误之处欢迎大家批评指正。不知道会不会有人一开始像我一样,为了学好LDPC码,先去好好了解其它的诸如RS码或者是卷...

stand_by_me123的博客 2万+

动态库编写 头文件.h注意事项

比如 log.h log.c 其中log.h 就几个函数的定义,用到的头文件很少。 但是log.c文件里面会有很多函数的实现,用到比如 #include <string.h> #include <time.h> #include <limits.h> #include <signal.h> #include <unistd....

奋斗在路上的博客 4193

VHDL按键消抖(状态机版本)

检测下降沿:设置一个和,分别代表之前的之前和之前的信号状态,若两个信号key_in_d2=1,key_in_d1=0,他俩的not key_in_d2 and key_in_d1为1,则说明下降沿产生,把它设置为标志位key_flag。延时计数:50MHz的板子每次计数需要20ns,而抖动时间大约为5-10ms。所以取7ms,作为延时时间。可以看见当检测到下降沿时,开始计数计数计满再次检测,若为低电平则为按下按键,否则为抖动。通过检测下降沿来临,延时计数再次检测,如果为低电平则为按键按下。

qq_69639216的博客 1083

【tensorrt】——dimensions not compatible for elementwise

tensorrt, dynamic shape 1. 问题 trtexec对onnx动态H,W的模型转换时的报错。 Resize_53 [Resize] inputs: [715 -> (-1, 128, -1, -1)], [454 -> ()], [455 -> ()], [453 -> (4)], [09/10/2021-10:49:20] [V] [TRT] ImporterContext.hpp:154: Registering layer: Resize_53 fo.

怡宝2号 1684

机器人空间平滑过渡-6点5次贝塞尔曲线

在工业机器人应用中,空间直线或者圆弧等笛卡尔运动中常使用贝塞尔曲线作为过渡平滑, 而6个控制点5次贝塞尔曲线更具备轨迹平滑、速度可导、加速度连续等要求,往往应用于 高级的机器人控制系统中。 贝塞尔曲线(Bézier curve)定义: 五次贝塞尔曲线公式为 化简得到 从上述式子来看,跟五次多项式是一致的,因此跟5次多项式轨迹规划也有相似之处。 但也存在不一致的地方。若使用...

4326

【深圳】IBM V3500存储维修 更换控制器故障

今天给大家分享的是深圳.福田区一个电商客户公司一台IBM Storwize v3500存储控制器故障从远程诊断 收集日志 分析结果的实际案例,如图所示通过存储管理口登陆进去后直接看到少了一个控制器,经过工程师分析日志后判定为该控制器损坏,接下来更换控制器配件,标准套件的控制器不带子卡和电池,所以需要把故障控制器上的子卡和电池拆下来装到新控制器上,这个电池拆还需要点技巧,接着把新的控制器插回V3500主机,等待大约十分钟后,新控制器指示灯全绿,管理界面看到节点已联机;冠峰科技-爱科技爱分享。

OuYangYuXi的博客 4574

2017-2018 ACM-ICPC Asia East Continent League Final H - Mr. Panda and Birthday Song(DP)

题意 给定一个串,需要把???改成任意小写字母,形成新的串sss 连续出现元音长度 >= x || 连续出现辅音长度 >= y ,输出DISLIKE。 连续出现元音长度 < x && 连续出现辅音长度 <y,输出LIKE。 即满足1又满足2,输出SURPRISE。 考虑每个位置要么是元音要么是辅音 我们可以得到为元音时的最短连续长度和为辅音的最短连续长度 这样就可以分开dpdpdp作决策 f[i][0/1]f[i][0/1]f[i][0/1]表示以iii结尾的最短连

jziwjxjd的博客 442

CST-Python(Pycharm如何与CST联合仿真,获取S参数)

我们想使用Python与CST联合仿真,其实是不需要自己下载Python的,因为CST在下载的时候就自带了Python3.6,我们只需要找到并将软件的环境设置到相应位置,即可联合仿真。(我的保存路径为D:\Program Files (x86)\CST Studio Suite 2020,在寻找时可以将前面切换成自己的保存路径,后面不需要修改)在CST帮助文档(打开CST软件,按F11即可直接访问帮助文档)里面,进行如下操作,便可以看到CST适配的Python版本为Python3.6!

weixin_52696285的博客 5648

C++动态内存管理

stdlib.h动态内存管理 //=================================================================================== 1.1.概念: 1) 栈:在函数内部声明的所有变量都将占用栈内存。 2) 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 //=========================...

tcy-阿春 483

ROS从入门到精通2-7:Gazebo仿真之动态生成障碍物

动态生成障碍物在机器人导航、碰撞避障算法测试、多机协同等领域应用广泛,可以帮助开发人员快速测试,本文介绍该技术并提供基于ROS Gazebo的实现

FRIGIDWINTER的博客 4896

YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

know_F0727的博客 189

动态规划入门H - 合唱队形 (最优子序列的另一个应用,这里是最优递增和最优递减子序列的结合)...

题目:H - 合唱队形 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < … < Ti , Ti > ...

weixin_33742618的博客 463

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Mr. Panda and Birthday Song Gym - 101775H

https://cn.vjudge.net/problem/Gym-101775H #include <iostream> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <cstdio> #inclu...

newhonor 221

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

gym 101775 H - Mr. Panda and Birthday Song

题解:          ①我们要找到是否存在一种(连续元音字母的长度&gt;=x的填字母的方法,或者连续辅音字母的长度&gt;=y的方法)满足一种就存在一种DISLIKE的songs。这种情况直接贪心就好,‘?’的地方全填元音,或者全填辅音。         ②我们还要找到一种情况(连续的元音字母的长度&lt;x并且连续的辅音字母的长度&lt;y)这种填字母方式要同时满足两种情况。 考虑到...

qq_18869763的博客 642

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

动态GIF库gif-h的使用教程

`gif-h` 是一个简单的C++单头文件库,用于创建从图像数据生成的动画GIF。该项目由Charlie Tangora开发,旨在提供一个轻量级且易于集成的方式来让程序输出动画。目前只支持输入RGBA8格式(虽然alpha通道被忽略)。通过调用几个关键函数,你可以轻松地管理GIF的创建过程。 ## 2. 项目快速启动 首先,确保你已经将`gif-h`库克隆到本地: ```bash git c

gitblog_01189的博客 1272

mysql.h 动态编译命令_Apache静态编译与动态编译详解

Apache拥有4层结构,从核心到外层的module。而外层的module可以用通过静态和动态两种方式与Apache共同工作。这也就引入下文的“动态”和“静态”两种编译安装方式:静态编译:编译的时候,所有的模块自己编译进httpd这个文件中,启动Apache的时候这些模块就已经加载进来了,可以直接来使用,而不用再 httpd.conf 中在 LoadModule 来加载,只要在 中来配置就可...

weixin_34146759的博客 1123

2019 CCPC final

文章目录比赛分析题目分析A题:Kick StartB题:Infimum of PathsC题:Mr. Panda and TypewriterD题:Pulse NovaE题 Non-Maximum SuppressionF题:FerryG题:Game on the TreeH题 Mr. Panda and SADI题:Mr. Panda and BlocksJ题:Wire-compatible Protocol bufferK题:Russian Dolls on the Christmas TreeL题:.

bleak_dream的博客 1054

Gym 101775H(dp)

传送门 题面: H. Mr. Panda and Birthday Song time limit per test 3.0 s memory limit per test 256 MB input standard input output standard output Mrs. Panda’s birthday is coming. Mr. P...

weixin_30539835的博客 215

mysql.h 动态编译命令_Linux下gcc编译生成动态连接库*.so文件并调用它

Linux下gcc编译生成动态连接库*.so文件并调用它node动态库*.so在linux下用c和c++编程时常常会碰到,最近在网站找了几篇文章介绍动态库的编译和连接,总算搞懂了这个以前一直不太了解得东东,这里作个笔记,也为其它正为动态库连接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面经过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、...

weixin_32819265的博客 1314

动态图(黑色)

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=hand; this.alt=点击查看大图; this.title=点击查看大图;}" src="http://p9.images22.51img1.com/6000/ndyali/98a33475b1ad423dc5

小小的素材库 1097

vue中的h

h是一个 JavaScript 函数,用来创建虚拟 DOM 节点。它通常作为render函数的一部分被使用,可以代替 Vue 的模板语法进行视图渲染。h的全称是,它的参数可以是组件、元素类型、属性和子节点。hh函数是 Vue 3 中构建虚拟 DOM 的重要工具,能够让开发者更细致地控制 Vue 组件的渲染。通过h,你可以更灵活地创建元素、传递属性和子节点,以及在运行时动态决定渲染内容。虽然通常 Vue 的模板语法已经足够方便,但在某些情况下,使用h可以提供更强的控制力,尤其是在需要动态渲染复杂内容时。

motoudi的博客 1136

【LeetCode】不同的子序列 [H](动态规划)

LeetCode 115:给定两个字符串S和T,返回S的所有子序列中有多少个子序列的字面值等于T。采用动态规划求解。

小七的博客 499

gif-h动态GIF生成终极指南:三行代码搞定专业动画

还在为生成动态GIF而头疼吗?gif-h库让你用最简单的方式创建专业的动画效果。这个轻量级的C++单头文件库,专为程序化生成动画而生,无论你是开发可视化工具、制作演示动画,还是游戏截图功能,都能轻松应对。 ## 使用场景:什么时候需要动态GIF生成 想象一下这些实际应用场景:你的程序需要生成操作步骤演示、游戏画面录制、数据可视化动画,甚至是简单的加载动画。传统的视频格式过于复杂,而静态图片又无

gitblog_00635的博客 1457

探索GitCode上的GIF-H: 一个高效动态图处理工具

是一个由 Ginsweater 开发的轻量级工具,专注于优化和处理动态图像(GIF)。对于需要频繁处理动画效果或在网络应用中使用GIF的开发者来说,它提供了一个简单易用、高性能的解决方案。 ## 技术分析 GIF-H 底层基于 Rust 编程语言,这使得它在处理速度和资源占用上具有显著优势。Rust 的内存安全特性和并发能力确保了 GIF-H 在处理大量数据时的稳定性和效率。项目使用了 [im

gitblog_00072的博客 1306

Hbase之动态切换HMaster

node01机器上有hbase主节点和Namenode,随着数据的增加,node01负载现在处于90%的状态内存也处于90%左右。 现在要求`不重启切换一下Hbase主节点`,切换到负载低的机器上

南风知我意 1317

Matplotlib绘制动态图效果

在实际应用中,我们经常有这样的需求,希望观察到数据的变化过程而不仅仅是最终的结果,例如股票的实时变化、各国家疫情人数动态变化等。此时,传统的静态图无法满足我们的需求,这就需要借助于动态效果图了。在Matplotlib中为我们提供了绘制动态图效果的相关类库,今天我们就一起来学习如何使用Matplotlib绘制动态效果图。首先给出几个案例效果。 在Matplotlib库中有一个子库animation,该库下定义了多种用于绘制动态效果图的类,例如Func...

手把手教你学编程 4679
上一篇: 【Gym 101775】Problem L SOS(博弈)
下一篇: 【2018 ccpc-final Gym 102055】B.Balance of the Force(枚举最大值)
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值