C. String Equality(思维)

news2025/1/13 19:45:59

Problem - 1451C - Codeforces

Ashish有两个字符串a和b,每个字符串的长度为n,还有一个整数k。

他想通过对a进行一些(可能是零)操作,将字符串a转换成字符串b。

在一次操作中,他可以

选择一个索引i(1≤i≤n-1)并交换ai和ai+1,或
选择一个索引i(1≤i≤n-k+1),如果ai,ai+1,...,ai+k-1都等于某个字符c(c≠'z'),用下一个字符(c+1)替换每一个,也就是说,'a'被'b'替换,'b'被'c'替换,以此类推。
请注意,他可以进行任何数量的操作,而这些操作只能在字符串a上进行。

帮助Ashish确定在对字符串a进行一些(可能是零)操作后,是否有可能将其转换为b。

输入
第一行包含一个整数t(1≤t≤105)--测试案例的数量。每个测试用例的描述如下。

每个测试用例的第一行包含两个整数n(2≤n≤106)和k(1≤k≤n)。

每个测试用例的第二行包含由小写英文字母组成的长度为n的字符串a。

每个测试案例的第三行包含长度为n的由小写英文字母组成的字符串b。

保证所有测试案例的数值之和不超过106。

输出
对于每个测试案例,如果Ashish能在一些动作后将a转换成b,则打印 "是",否则打印 "否"。

你可以打印答案的任何字母(大写或小写)。

例子
输入复制
4
3 3
abc
bcd
4 2
abba
azza
2 1
zz
aa
6 2
aaabba
ddddcc
输出拷贝
没有



注意
在第一个测试案例中,可以证明不可能将a转换成b。

在第二个测试案例中。

"abba" -→inc "acca" -→inc ... -→inc "azza"。

这里 "swap "表示第一种类型的操作,而 "inc "表示第二种类型的操作。

在第四个测试案例中。

"aaabba" --→-swap "aaabab" ---交换 "aaabb" -→inc ... -→inc "ddaabb"  -→inc ... -→inc "dddcc"。

 题解:

根据第一种操作,我们可以任意改变字符串a中字母的位置,

由于只能将小的转化为大的,那么a串要匹配b串,可以考虑从字母’a’开始匹配到字母’z’,每次匹配要求字符串a中可以转化或直接匹配字母数大于等于b中对应字母数。
每次匹配完后,剩下的字母一定要进行转换,因此必须为k倍数。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
char a[1000005];
char b[1000005];
int f[5005][5005];
void solve()
{
	int n,k;
	cin >> n >>k;
	cin >> a+1>>b+1;
	map<int,int> f1,f2;
	
	for(int i = 1;i <= n;i++)
	{
		f1[a[i] - 'a'] ++;
		f2[b[i] - 'a']++;
	}
	int f = 0;
	int s = 0;
	for(int i = 0;i < 26;i++)
	{
		s += f1[i];
		if(s < f2[i])
		{
			f = 1;
			break;
		}
		s -= f2[i];
		if(s%k)
		{
			f =1 ;
			break;
		}
	}
	if(f)
	{
		cout<<"No\n";
	}
	else
	{
		cout<<"Yes\n";
	}
}
int main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}
//aaa
//abb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哪吒汽车的技术发布会都发布了什么?纯干货抢先看

11月21日&#xff0c;哪吒汽车发布了浩智超算、浩智电驱、浩智增程三大技术品牌&#xff0c;并推出三款技术产品&#xff0c;包括智能汽车中央超算平台、800V SiC高性能电驱系统、高效三合一增程器。去年年底&#xff0c;哪吒曾经发布过山海平台&#xff0c;据说是一个支持哪吒…

性能环境搭建(0-CentOS7 安装配置)

1.前言 根据现有的组件&#xff0c;准备动手搭建一套完整的监控环境。既然是练手&#xff0c;还是在虚拟机里自己先练习一下。出了问题也好恢复。所有就先从最基本的开始。那就是操作系统开始搭建玩起来。 2.环境 资源有效利用吧&#xff0c;公司的资源能自由使用的那最方便…

数据结构-复杂度(一)

目录 一、什么是复杂度&#xff1f; 算法效率&#xff1a; 复杂度&#xff1a; 二、复杂度分类 一、时间复杂度 二、空间复杂度&#xff08;Space Complexity&#xff09; 了解数据结构之前需要了解复杂度。 一、什么是复杂度&#xff1f; 在介绍复杂度之前我们现分享一…

CengBox靶机

0x01 信息收集 nmap -sV 10.0.2.6 22 ssh端口&#xff0c;弱口令爆破为主 80 web页面 目录遍历&#xff0c;备份文件查找等 dirsearch -u http://10.0.2.6 获取了目录&#xff0c;发现存在一个maseradmin目录&#xff0c;可能存在些东西&#xff0c;继续扫。 dirsearch -u …

C规范编辑笔记(四)

大家好&#xff0c;今天来给大家分享一下C规范编辑笔记第四篇&#xff0c;距离我们C规范编辑笔记第三篇也快过去了一个月&#xff0c;这次继续分享一波~ 1、以大写形式声明常量&#xff0c; 为避免误解&#xff0c;常量值必须根据其类型使用后缀。这不仅有助于代码阅读&#x…

CSO面对面丨如何通过“联合作战”,加强银行安全体系建设

随着数字化转型的深入&#xff0c;以银行为代表的金融机构不断加码金融科技建设。然而随着线上业务量不断上升&#xff0c;银行面临的安全风险暴露面也愈大、问题愈加复杂。本期腾讯安全《CSO面对面》栏目&#xff0c;邀请到某头部商业银行安全主管&#xff0c;以金融行业的安全…

【Lilishop商城】No1-1.业务了解+划分各模块逻辑

目录 A1.整体业务逻辑 B1.模块整理 C1.运营后台 C2.店铺后台 C3.买方平台 B2.重点模块梳理图 C1.订单模块 C2.退货/退款模块&#xff08;即售后模块&#xff09; C3.促销活动模块 A2.模块划分&#xff08;自己思考的&#xff09; A3.数据结构划分&#xff08;自己思考…

算法设计与分析 SCAU11079 可以移动的石子合并(优先做)

11079 可以移动的石子合并&#xff08;优先做&#xff09; 时间限制:1000MS 代码长度限制:10KB 提交次数:25 通过次数:9 题型: 编程题 语言: G;GCC;VC;JAVA Description 有n堆石子形成一行(a1,a2,…,an&#xff0c;ai为第i堆石子个数)&#xff0c;现要将石子合并成一堆&…

Android App开发手机阅读中贝塞尔曲线的原理讲解及实现波浪起伏动画实战(附源码和演示视频 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、贝塞尔曲线的原理 贝塞尔曲线是一种用于二维图形的数学曲线。贝塞尔曲线由节点和线段构成&#xff0c;其中节点是可拖动的支点&#xff0c;而线段彷佛有弹性的牛皮筋。它除了起点和终点之外&#xff0c;不再描绘中间的折现…

嵌入式(驱动开发)(中断处理)

一、什么是中断 一种硬件上的通知机制&#xff0c;用来通知CPU发生了某种需要立即处理的事件 分为&#xff1a; 内部中断 CPU执行程序的过程中&#xff0c;发生的一些硬件出错、运算出错事件&#xff08;如分母为0、溢出等等&#xff09;&#xff0c;不可屏蔽外部中断 外设发…

SpringBoot怎么整合第三方缓存技术/EhCache缓存技术使用以及Redis缓存技术使用怎么在SpringBoot中使用

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.5 整合第三方技术 3.5.1 缓存 3.5.1.1 介绍 缓…

2022/11/21[指针] 多维数组与指针的联系

1、指向数组元素的指针变量 #include<stdio.h> int main() {int* p;int a[3][4] { {1,2,3,4},{5,6,7,8},{9,10,11,12} };int i, j;//将第0行第0列的地址赋给pfor (p a[0]; p < a[0] 12; p)//注意是a[0]{if ((p - a[0]) % 4 0)printf("\n");printf("…

java--Lambda(2)表达式语法

文章目录0 写在前面1 Lambda 表达式的五种形式1.1 不包含参数&#xff1a;1.2 包含一个参数&#xff1a;1.3 有多个参数1.4 表达式主体是不是一个代码块1.5 不声明参数类型2 写在末尾0 写在前面 最基本的 Lambda 表达式&#xff0c;它由三部分组成具体格式是这样子的&#xff…

【Py】使用flask-apscheduler动态调整作业参数(附源码)

之前的项目常使用Apscheduler进行定时任务调度&#xff0c;但最近想通过接口对这些任务进行动态调整&#xff0c;比如调整任务启停、调整任务执行时间、间隔时间等等 flask-apscheduler这个基于flask的库能够满足上面的需求&#xff0c;而且由于基于flask&#xff0c;所以我常…

查题校园免费题库接口

查题校园免费题库接口 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点…

ButterKnife依赖注入框架源码解析

BuffterKnife 采用 注解 APT技术 APT&#xff1a;Annotation Processor tool 注解处理器&#xff0c;是javac的一个工具&#xff0c;每个处理器都是继承于AbstractProcessor 注解处理器是运行在自己的java虚拟机中 APT如何生成字节码文件&#xff1a; Annotation Processing 不…

李立宗《讲给入门者的深度学习》

14天学习训练营导师课程&#xff1a; 李立宗《讲给入门者的深度学习》 一、什么是深度学习&#xff1f; 1、传统方法、机器学习、深度学习的区别&#xff1f; 以取暖为例&#xff0c;来说明三者的不同之处。 传统方法&#xff1a;通过火炉生火&#xff0c;需要生火、添柴、…

公众号免费题库使用

公众号免费题库使用 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#xff09;…

Python实现点选验证码识别, 模拟登陆小破站并自动发弹幕

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: Python 3.8 Pycharm 2021.2 谷歌浏览器 谷歌驱动 模块使用: selenium >>> pip install selenium3.141.0 指定版本安装 time 打码平台 如果安装python第三方模块: win R 输入 cmd 点击确定, 输入…

【白话科普】从“熊猫烧香”聊聊计算机病毒

大家还记得2006年在网络上肆虐的“熊猫烧香”病毒吗&#xff1f; 虽然图标是一只小熊猫举着三根香&#xff0c;但是它是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒&#xff0c;它不但能感染系统中exe&#xff0c;com&#xff0c;pif&#xff0c;src&#xff0c…