AtCoder Beginner Contest 249(E)

AtCoder_Python:Python中解决的AtCoder问题的摘要 使用Python3的AtCoder 它是python3解决AtCoder问题的方法。 我们已经确认了AC,但是环境可能会改变或被忽略。 在极少数情况下,PyPy会提交某些内容,在这种情况下,我将在评论中对其进行描述,但是也有可能丢失该内容。 我会一点一点地更新它。 问题A 问题B 问题C 问题D 问题E 问题F 197/197 197/197 174/197 76/197 4/72 0/72 ABC001 --ABC041 比赛 一种 乙 C d 比赛 一种 乙 C d ✓ ABC023 ✓ ✓ ABC003 ✓ ✓ ✓ ABC024 ✓ ✓ ✓ ABC004 ✓ ✓ ✓ ABC025 ✓ ✓ ABC005 ✓ ✓ ✓ ABC026 ✓ ✓ ✓ ABC006 ✓ ✓ ✓ ✓ ABC027 ✓ 立即下载

E - RLE

题意:
有一种字符串转换方式,例如
“aaabbcccc”“aaabbcccc”“aaabbcccc”可以转换为“a3b2c4”“a3b2c4”“a3b2c4”
求长度为nnn的字符串,有多少种不同的字符串可以使转换后的字符串长度小于nnn
思路:
动态规划
令f[i][j]f[i][j]f[i][j]为长度为iii的字符串,转换后的长度为jjj,有多少种情况
cal(x)cal(x)cal(x)表示连续xxx个相同的字母组成的字符串转换成新串后的长度
最最简单的dpdpdp转移办法即
f[i][j]=∑f[i−k][j−cal(k)] f[i][j]=\sum f[i-k][j-cal(k)] f[i][j]=∑f[i−k][j−cal(k)]
时间复杂度为O(n3)O(n^3)O(n3),无法通过本题
其实也不难发现
cal(1)=cal(2)=...=cal(9)=1cal(10)=cal(11)=...=cal(99)=2... cal(1)=cal(2)=...=cal(9)=1\\cal(10)=cal(11)=...=cal(99)=2\\... cal(1)=cal(2)=...=cal(9)=1cal(10)=cal(11)=...=cal(99)=2...
于是
f[i][j]=(f[i−1][j−1]+...+f[i−9][j−1])∗25f[i][j]=(f[i−10][j−2]+...+f[i−99][j−2])∗25... f[i][j]=(f[i-1][j-1]+...+f[i-9][j-1])*25\\f[i][j]=(f[i-10][j-2]+...+f[i-99][j-2])*25\\... f[i][j]=(f[i−1][j−1]+...+f[i−9][j−1])∗25f[i][j]=(f[i−10][j−2]+...+f[i−99][j−2])∗25...
注意特判开始的情况,字符串开始的连续区间有262626种
使用前缀和优化dpdpdp即可在O(n2)O(n^2)O(n2)的时间解决问题

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll f[3005][3005],sum[3005][3005];
ll cal(ll x)
{
	if(x<10) return 2;
	else if(x<100) return 3;
	else if(x<1000) return 4;
	else return 5;
}
ll n,mod;
int main()
{
	scanf("%lld%lld",&n,&mod);
	f[0][0]=1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(cal(i)==j)
			{
				f[i][j]+=26;f[i][j]%=mod;
			}
			if(j>2&&i>1)
			{
				int u=max(0,i-10);
				f[i][j]+=((sum[i-1][j-2]-sum[u][j-2])%mod+mod)%mod*25;
				f[i][j]%=mod;
			}
			if(j>3&&i>10)
			{
				int u=max(0,i-100);
				f[i][j]+=((sum[i-10][j-3]-sum[u][j-3])%mod+mod)%mod*25;
				f[i][j]%=mod;
			}
			if(j>4&&i>100)
			{
				int u=max(0,i-1000);
				f[i][j]+=((sum[i-100][j-4]-sum[u][j-4])%mod+mod)%mod*25;
				f[i][j]%=mod;
			}
			if(j>5&&i>1000)
			{
				int u=max(0,i-10000);
				f[i][j]+=((sum[i-1000][j-5]-sum[u][j-5])%mod+mod)%mod*25;
				f[i][j]%=mod;
			}
			sum[i][j]=sum[i-1][j]+f[i][j];
			sum[i][j]%=mod;
		}	
	}
	ll ans=0;
	for(int i=1;i<n;i++)
	{
		ans+=f[n][i];
		ans%=mod;
	}
	printf("%lld\n",ans);
}
MATLAB不能识别已安装的visual studio 2015解决方法 首先,对于MATLAB识别已经安装的vs版本通过命令: mex -setup 下图为本电脑下同时安装的两个visual studio 如果搞清楚MATLAB识别电脑上安装vs的过程,可通过命令: mex -setup -v MATLAB输出识别编译器的整个过程。其中HKLM和HKCU分别是注册表中的HKEY_CURRENT_USER,HKEY_LOCAL_MA…的缩写,MATLAB没有找到对应编译器是由于注册表里没有对应信息(主要是文件路径,C++编译器的路径),或者在注册表里存在该信息,但是找不到 阅读详情

相关推荐

机器学习之性能度量

废话不说,本文分为两个部分: 第一部分,我对周志华教授《机器学习》这本书中性能度量知识点中疑难点的学习感悟;第二部分,我感觉该书2.3节 性能度量 中最后部分的代价曲线表述有误,苦于没找到联系教授的正确方式,故希望与广大网友一起探讨。

hustqb的博客 4628

解压字符串 例如: a3b4c5 解压为 aaabbbbccccc

**#include <stdio.h> #include <string.h> #include <stdlib.h> #include <strings.h> void zip(char str1[],char str2[]); int main() { char str1[20]; char str2[40]; gets(str1); zip(...

weixin_45469032的博客 1082

基于Python的MGWR多尺度地理加权回归模型

多尺度地理加权回归(MGWR)变量之间的关系在地理空间上不是均一的,所有特征变量的影响都在不同的空间范围(带宽)内变化,某些变量可能表现出局部性影响(小带宽),某些变量可能表现出全局性影响(大带宽),通过优化每个特征变量的带宽,捕捉到空间关系的多尺度特性,得到更细致的模型解释。

weixin_61965078的博客 3852

//输入形如aaaabbbbcc,输出4a4b2c

@TOC 定义一个指针k,全局的指针从头遍历。 碰到第一个和str[k]不一样的就退出循环,然后递归 char_count(aabb) = ‘2a’ + char_count(bb)

weixin_43849266的博客 666

开关变换器小信号建模实战:从理论到环路设计

本文深入探讨了开关变换器小信号建模的实战技巧,从理论基础到环路设计全面解析。通过Buck和Boost变换器的具体案例,详细介绍了状态空间平均法、扰动法等关键建模技术,并分享环路补偿设计和实际调试中的宝贵经验。文章特别强调了小信号建模在电源设计中的重要性,为工程师提供了从理论到实践的完整解决方案。

weixin_29290259的博客 376

告别卡顿!用AVPro Video在Unity 2022.3里流畅播放4K视频的保姆级配置流程

本文详细介绍了如何在Unity 2022.3中使用AVPro Video插件实现4K视频的流畅播放。从环境配置、插件选型到核心性能优化技巧,包括解码器设置、内存管理策略和多平台适配方案,帮助开发者彻底解决卡顿问题,提升视频播放体验。

weixin_32349561的博客 318

AtCoder Beginner Contest 249

我们用map存储各个字母出现的次数,且在输入时判断有无大小写字母,如果有大小写字母,且个各字母出现次数为1,即为优美字符串。从第零秒开始计时,时间对(a+c)取模如果小于a,那第一个人跑的距离加上b,重复以上操作直到x秒。给你n个字符串,在其中选若干个字符串使其字母出现的次数为k的个数。包含大小写字母,没有重复字母(A,a不算同一个字母)。另一个人每以d米每秒慢跑e分钟后休息f分钟。一个人每以b米每秒慢跑a分钟后休息c分钟。给你一个字符串,求其是否是优美字符串。求出两个人走的距离后比较大小即可。

jiaking_two的博客 152

大疆M3508电机使用CAN通信进行速度PID闭环控制详解

目录一. 简介二. 电机通信协议三. 电机PID控制原理四. 官方代码移植-中断接收五. 官方代码移植-查询接收 一. 简介 之前写过一篇文章STM32实现四驱小车(五)电机控制任务——电机速度PID控制算法,其中是以大疆的M3508电机为例进行讲解的(没错,就是RoboMaster机器人同款电机,不过Robomaster上的电机好像是小一号的M2006)。不少小伙伴私信问我要代码,我都回复说不是有官方demo么。后来问的人多了我大概明白了,看来官方的Demo还是有点门槛。可能是带FreeRTOS操作系统看

qq_30267617的博客 7万+

压缩程序,java版本(输入AAABBCCCCD,压缩成A3B2C4D1并输出)

题目描述:写一段压缩程序,输入AAABBCCCCD,压缩成A3B2C4D1并输出.代码及注释:package **;import java.util.Scanner;public class test { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Sc...

weixin_38317875的博客 1532

智能车图像处理20-进阶篇12--正入十字补线1

这篇文章主要讲述基本的正入十字补线方法。

taiyuezyh的博客 6933

ESP32设备驱动-MLX90393磁场传感器驱动

MLX90393 磁场传感器可以在运行时重新编程为不同的模式和不同的设置。 该传感器使用 Melexis 专有的 Triaxis® 技术提供与沿 XYZ 轴感应的磁通密度成比例的 16 位输出,还提供温度输出信号。 这些数字值可通过 I2C 和 SPI 获得,其中 MLX90393 是总线上的从设备。

视觉与物联智能 2350

AtCoder Beginner Contest 249题解(E,F)

AtCoder Beginner Contest 249题解(E,F) E - RLE 题目大意:有一个长度为 N 的只含有小写字母字符串 S ,将S中连续相同的字母用计数法表示,如 aaa -> a3, aaabbbcc -> a3b3c2。现在要求用计数法表示后长度严格小于原来长度的 S 数量,要求对P取模。 分析:考虑动态规划: ​ 设 f[ i ] [ j ]为 长度为 i 的字符串 用计数法表示后长度为 j 的数量 。 ​ sum[ i ] [ j ] 为法 f[ i ] [

finish_work的博客 2565

【Windows Server 2019】活动目录 (Active Directory) ——将计算机加入域和脱离域

博文介绍了如何将计算机加入AD域和脱离AD域,包括加入域,验证客户机加入到域后的信息,使用域账户用户在客户机上登录,使用本地账户用户在计算机上登录,脱离域。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6169

AtCoder Beginner Contest 249 - E - RLE(前缀和优化dp)

题目链接:E - RLE (atcoder.jp)

m0_51979134的博客 728

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

lwip-2.0.3

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

AtCoder Beginner Contest 249 E - RLE // 动态规划 + 前缀和优化

This is a summary.

Jakon_的博客 1371

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

AtCoder Beginner Contest 231-260

AtCoder Beginner Contest 231-260

青少年趣味编程 1658

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

AtCoder Beginner Contest 335

AtCoder Beginner Contest 335

青少年趣味编程 1124

AtCoder Beginner Contest 210

AtCoder Beginner Contest 210

青少年趣味编程 956

AtCoder Beginner Contest 441

本文汇总了多个AtCoder Beginner Contest 441及相关系列比赛的题解资源,包括Bilibili视频讲解(ABC441赛时6题解析、VP比赛实录等)、优快云博客的技术解析(如树状数组应用、E题字符串处理等),以及知乎专栏的系统性题解。内容涵盖ABC440-ABC255等多场比赛,涉及算法知识点讲解和代码实现,适合备赛者参考学习。资源链接形式多样,包含视频、博客和专栏文章,为不同学习偏好的编程竞赛爱好者提供丰富的学习材料。

青少年趣味编程 435

Monoxer Programming Contest 2022(AtCoder Beginner Contest 238)「D 位运算」「E bfs || 并查集」

Monoxer Programming Contest 2022(AtCoder Beginner Contest 238) D - AND and SUM 题目描述: x & y = a x + y = s 给定a和s,问是否存在x和y满足上述两个条件 思路: 显然对于a的每一位(二进制下)x和y都必须有,也就是s >= 2 * a,但是这个条件并不能保证a的每一位(二进制下)x和y都有,只是一个所以让s先减去一个a,再判断a的每一位,s是不是都有即 #include &

Suryxin's blogs 517

AtCoder Beginner Contest 242

A T-shirt #include <stdio.h> #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <map> #include <stack> #include <string> #include <cstring> #include <vector> #

qq_62615329的博客 695

UNIQUE VISION Programming Contest 2022(AtCoder Beginner Contest 248)——E

题目传送门 思路 思路很简单,就是有亿点点细节。 k=1:k=1:k=1: 答案显然是无限多个 k!=1:k!=1:k!=1: 我们把所有直线存下来,然后看每条直线上有多少个点就可以得出答案。但是问题就出在存直线的时候,我们不能直接计算 y=kx+by=kx+by=kx+b , 因为这样浮点数误差很大。所以需要另辟蹊径,我们对斜截式变个形: 这样对于每条直线,我们存下dx,dy,b∗dxdx,dy,b*dxdx,dy,b∗dx 即可,但是要注意 dx,dydx,dydx,dy 存的时候应该除以它们的

qq_45769627的博客 415

AtCoder Beginner Contest 183 F - Confluence | 启发式合并(dsu on a tree)

题目大意: 抽象一下:初始n个点都有一个颜色,给出两个操作:、 1.x所在的组 与 y所在的组合并 2.询问x所在的组内 有多少个颜色为y的点 题目思路: 启发式合并啊啊啊啊啊啊啊啊啊啊啊啊 从比赛结束到11.30才想到了 其实这题相当于在树上维护静态信息 考虑并查集按秩合并的复杂度nlogn 所以可以严格的控制其复杂度 这项复杂度被确定之后 查询自带一个log,那么就可以考虑log^2了 没想到跑249ms ,可能数据没这么大~ Code: /*** keep hungry a

一只酷酷光儿的博客 554

国内计算机高含金量赛事盘点

根据国内计算机领域赛事的认可度、影响力及对升学、就业的实际助力,以下为高含金量赛事的分类与介绍。蓝桥杯在多数顶尖高校的保研、评优体系中已不具备显著优势,故不列入高含金量梯队。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 331
上一篇: Educational Codeforces Round 127(D~E)
下一篇: The 15th Jilin Provincial Collegiate Programming Contest
不是张胖胖
博客等级 码龄6年 67粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值