Codeforces Round (Div.3) C.Sort (前缀和的应用)

原题:

time limit per test:5 seconds

memory limit per test:256 megabytes

You are given two strings a and b of length n. Then, you are (forced against your will) to answer q queries.

For each query, you are given a range bounded by l and r. In one operation, you can choose an integer i (l≤i≤r) and set ai=x where x is any character you desire. Output the minimum number of operations you must perform such that sorted(a[l..r])=sorted(b[l..r]). The operations you perform on one query does not affect other queries.

For an arbitrary string c, sorted(c[l..r]) denotes the substring consisting of characters cl,cl+1,...,cr sorted in lexicographical order.

Input

The first line contains t (1≤t≤1000) – the number of test cases.

The first line of each test case contains two integers nn and q (1≤n,q≤2⋅10^5) – the length of both strings and the number of queries.

The following line contains a of length n. It is guaranteed aa only contains lowercase latin letters.

The following line contains b of length n. It is guaranteed bb only contains lowercase latin letters.

The following q lines contain two integers l and r (1≤l≤r≤n) – the range of the query.

It is guaranteed the sum of n and q over all test cases does not exceed 2⋅10^5.

Output

For each query, output an integer, the minimum number of operations you need to perform in a new line.

翻译:

问题描述:

你被给定了两个长度为 n 的字符串 ab。然后,你需要(虽然是被迫的)回答 q 个查询。

对于每个查询,你会得到一个由 lr 确定的范围。在一个操作中,你可以选择一个整数 il ≤ i ≤ r)并将 a[i] 设置为你希望的任何字符。输出你必须执行的最小操作次数,以确保 sorted(a[l..r]) = sorted(b[l..r])。你对一个查询执行的操作不会影响其他查询。

对于任意字符串 csorted(c[l..r]) 表示在 c[l]c[r] 的子字符串中按字典序排序后的子字符串。

输入:

第一行包含 t1 ≤ t ≤ 1000)—— 测试用例的数量。

每个测试用例的第一行包含两个整数 nq1 ≤ n, q ≤ 2⋅10^5)—— 两个字符串的长度和查询的数量。

接下来一行包含长度为 n 的字符串 a。字符串 a 只包含小写字母。

接下来一行包含长度为 n 的字符串 b。字符串 b 只包含小写字母。

接下来 q 行,每行包含两个整数 lr1 ≤ l ≤ r ≤ n)—— 查询的范围。

保证所有测试用例中 nq 的总和不超过 2⋅10^5

输出:

对于每个查询,输出一个整数,表示你需要执行的最小操作次数,每个查询输出一行。

Cf的题属于是想到就出结果,想不到就卡死,没有很多的模板可以套用,必须要先观察,千万不要上来就暴力,很可能连签到都过不去哦

观察发现,这道题其实就是求在一个区间当中,两个字符串有多少个字符不同的数量,那可以假设一下,如果暴力来敲,先截取[l,r]的字符串,然后排序,然后去遍历一遍看有多少不同

如果是这样想基本就陷入到坑里面出不来了,因为的话按照字典序排序之后,你没办法要求两个字符串中相同的字符的字符位置一一对应,不同的一一对应,是有这种情况的,那么在看题目本身的需求,就是求有多少不同的个数,那其实对每个字符串求前缀和,记录第i个位置的26字母分别出现的次数,然后在给出区间之后在去对比前缀和中26字母数量的差异,相同就不用管,不同就加上不同的个数,最后除以2(因为两个字符串都加了一遍)

代码:

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>using namespace std;void solve() {int n, q;cin >> n >> q;vector<vector<int>> pre1(n + 1,vector<int>(26,0));vector<vector<int>> pre2(n + 1,vector<int>(26,0));for(int i = 1;i <= n;i ++){char ch;cin >> ch;pre1[i][ch - 'a'] ++;for(int j = 0;j < 26;j ++){pre1[i][j] += pre1[i - 1][j];}}for(int i = 1;i <= n;i ++){char ch;cin >> ch;pre2[i][ch - 'a'] ++;for(int j = 0;j < 26;j ++){pre2[i][j] += pre2[i - 1][j];}}  while(q --){int l,r;int res = 0;cin >> l >> r;for(int i = 0;i < 26;i ++){int A = pre1[r][i] - pre1[l - 1][i];int B = pre2[r][i] - pre2[l - 1][i];res += abs(A - B);}cout << res / 2 << endl; }
}int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

加油

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

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

相关文章

FPGA开发:Verilog数字设计基础

EDA技术 EDA指Electronic Design Automation&#xff0c;翻译为&#xff1a;电子设计自动化&#xff0c;最早发源于美国的影像技术&#xff0c;主要应用于集成电路设计、FPGA应用、IC设计制造、PCB设计上面。 而EDA技术就是指以计算机为工具&#xff0c;设计者在EDA软件平台上…

240907-Gradio渲染装饰器Render-Decorator

A. 最终效果 B. 示例代码 import gradio as gr import gradio as grwith gr.Blocks() as demo:input_text gr.Textbox()gr.render(inputsinput_text)def show_split(text):if len(text) 0:gr.Markdown("## No Input Provided")else:# for letter in text:for lett…

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题&#xff0c;就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的&#xff0c;就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream> # include<vector>…

2024/9/6黑马头条跟学笔记(四)

D4内容介绍 阿里三方安全审核 分布式主键 异步调用 feign 熔断降级 1.自媒体文章自动审核 1.1审核流程 查文章——调接口文本审核——minio下载图片图片审核——审核通过保存文章——发布 草稿1&#xff0c;失败2&#xff0c;人工3&#xff0c;发布9 1.2接口获取 注册阿…

How can I load the openai api configuration through js in html?

题意&#xff1a;怎样在HTML中通过JavaScript加载OpenAI API配置 问题背景&#xff1a; I am trying to send a request through js in my html so that openai analyzes it and sends a response, but if in the js I put the following: 我正在尝试通过HTML中的JavaScript发…

Qt/C++ 个人开源项目#串口助手(源码与发布链接)

一、项目概述 该串口助手工具基于Qt/C开发&#xff0c;专为简化串口通信调试与开发而设计&#xff0c;适合新手快速上手。工具具有直观的用户界面和丰富的功能&#xff0c;旨在帮助用户与串口设备建立可靠通信&#xff0c;便于调试、数据传输和分析。 二、主要功能 波特率&a…

【信创建设】信息系统信创建设整体技方案(word原件完整版)

信创&#xff0c;即“信息技术应用创新”。我国自主信息产业聚焦信息技术应用创新&#xff0c;旨在通过对IT硬件、软件等各个环节的重构&#xff0c;基于我国自有IT底层架构和标准&#xff0c;形成自有开放生态&#xff0c;从根本上解决本质安全问题&#xff0c;实现信息技术可…

多款式随身WiFi如何挑选,USB随身WiFi、无线电池随身WiFi、充电宝随身WiFi哪个好?优缺点分析!

市面上的随身WiFi款式多样琳琅满目&#xff0c;最具代表性的就是USB插电款、无线款和充电宝款。今天就来用一篇文章分析一下这三种款式的优缺点。 USB插电款 优点&#xff1a;便宜&#xff0c;无需充电&#xff0c;在有电源的地方可以随时随地插电使用&#xff0c;比如中兴的U…

Spring Boot 部署方案!打包 + Shell 脚本详解

本篇和大家分享的是springboot打包并结合shell脚本命令部署&#xff0c;重点在分享一个shell程序启动工具&#xff0c;希望能便利工作&#xff1b; profiles指定不同环境的配置 maven-assembly-plugin打发布压缩包 分享shenniu_publish.sh程序启动工具 linux上使用shenniu_p…

python进阶篇-day07-高级语法与正则

day07-python其他高级语法 一. with(上下文管理) 介绍 概述 一个类只要实现了__ enter __ () 和 __ exit __ ()方法, 这个类就是一个上下文管理器类, 该类的对象 上下文管理器对象 目的 节约资源, 提高效率, 避免手动释放资源, 且出bug的时候, 也会自动尝试释放资源 特点…

【Centos】绕开报错ModuleNotFoundError: No module named ‘dnf‘

问题原因&#xff1a; 安装python3.9后不能使用yum Traceback (most recent call last):File "/usr/bin/yum", line 57, in <module>from dnf.cli import main ModuleNotFoundError: No module named dnf绕开yum解决方法&#xff1a; 直接下载相关依赖包 htt…

怎样将手机屏幕(远程)投屏到家里的大电视上?

我不住家里&#xff0c;前几次回去都会替老爸老妈清理手机。这两个星期没空回去&#xff0c;老爸吐槽手机用几天就又卡了&#xff0c;其实就是清理一些手机缓存的问题。 我说我远程控制他的手机&#xff0c;给他清理一下。他一听“控制”就不喜欢&#xff0c;说我大了&#xf…

【Python知识宝库】文件操作:读写文件的最佳实践

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、文件读取1. 使用open函数2. 逐行读取3. 使用readlines和readline 二、文件写入1. 写入文本2. 追加内容3. 写入…

使用shell脚本安装mysql8,进行主从备份配置

思路 在3台主机上安装mysql进行主从备份配置 使用rpm包yum安装mysql 首先&#xff0c;我们要准备好安装文件&#xff0c;首先下载rpm包 wget -P "/opt/" https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm 然后执行安装&#xff08;默认已配置…

HMI设计:嵌入式设备和电脑的差异化,工控领域首选。

嵌入式设备属于专机专用&#xff0c;电脑是通用&#xff0c;从性能、用途、特殊能力、成本、通信上嵌入式设备完全优于电脑&#xff0c;是工控领域的首选。 嵌入式设备和电脑在很多方面有着显著的差异&#xff0c;主要体现在以下几个方面&#xff1a; 1. 设计用途&#xff1a…

在js渲染的dom中的事件中传递对象

在某些情况下&#xff0c;可能需要将整个对象或部分对象嵌入到 HTML 元素的属性中&#xff0c;可以将对象数据序列化为 JSON 字符串&#xff0c;存储在 data-* 自定义属性中。这样可以在事件中取出并解析对象数据&#xff1a; <!DOCTYPE html> <html lang"en&qu…

C++万字解读类和对象(上)

1.类的定义 class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 为了区分成员变量&…

[QT] QT事件与事件重写

一.事件 事件(event)是由系统或者 Qt本身在不同的场景下发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口关闭等都会发出一个相应的事件。 一些事件在用户操作时发出(如鼠标/键盘事件); 另一些事件则是由系统自动发出(如计时器事件)。 Qt窗口中对于产生的一系列事件都…

MarkdownEditor 配置以及使用

MarkdownEditor 配置以及使用 MarkdownEditor是一款基于浏览器的 Markdown 编辑器&#xff0c;虽然他是独立软件&#xff0c;但该软件内嵌一个浏览器。功能非常简单实用、反应速度很快&#xff0c;号称是Markdown领域的NotePad&#xff08;记事本&#xff09;。 MarkdownEdit…

面向对象23种设计模式通俗理解

终点即是起点,自强不息! 设计模式的理解 设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 模式&#xff1a;在某些场景下&#xff0c;针对某类问题的某种通用的解决方案。 场景&#xff1a;项目所在的环境 问题&#xff1a;约束条件&#xff0c;项目目标…