Codeforces 879 C.Game with Reversing

news2024/11/23 8:31:58

 

博弈,思维,分类讨论

题意:

给你两个字符串,Alice可以每次选一个字符串的任意字母换成任意的字母,Bob可以选择一个字符串进行反转,Alice希望快速结束游戏,Bob希望拖延游戏,问你如果两者都是最优策略的情况下游戏时间是多少?

分析:

看题目发现 好像可以从Bob着手分析,首先反转一个字符串两次是不改变的

分奇偶来看,如果游戏结束时候 Bob进行了偶数次反转,容易想到 他不改变两个字符串的各个字母的索引顺序,当然有可能两个都是反着的

如果奇数次反转的话,那么肯定有一个字符串是逆序的(和开始的顺序比较的话)

因此 我们Alice可以采取以下策略:

 假设Bob最后偶数次反转 我们只需要统计S和T的diff为cnt,则答案就是2*cnt - cnt%2

同理假设Bob最后反转了奇数次,统计S和(T的逆序)的diff为cnt 答案就是2*cnt-(1-cnt%2)

两者我们取小者就行了

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int main()
{
	int T;
	cin>>T;
    
    string str1,str2;
    while(T--){
    	int len;
    	cin>>len;
    	cin>>str1>>str2;
    	
    	int cnt1=0,cnt2=0;
    	for(int i=0;i<len;i++)
    	 if(str1[i]!=str2[i])cnt1++;
    	
    	reverse(str2.begin(),str2.end());
    	
    	for(int i=0;i<len;i++)
    	 if(str1[i]!=str2[i])cnt2++;
    	 
    	 
        cnt1 = 2*cnt1-cnt1%2;
        
        if(cnt2==0)cnt2 = 2;
        else cnt2 = 2*cnt2-(1-cnt2%2);
        
        cout<<min(cnt1,cnt2)<<endl;
    	
    	
    	
    	
    }
	
	
}

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

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

相关文章

【智能座舱系列| 域控制器】 — 智能座舱域控制器技术发展趋势分析

引言 提到座舱域控制器用的主控SoC芯片,大家第一个会想到应该就是高通的SA8155P 。目前,在主机厂新上市的中高端车型中,其座舱的主控SoC芯片多是采用高通的SA8155P, SA8155P为什么会得到众多主机厂的青睐呢?不妨先看一看高通座舱SoC芯片的迭代历程。 高通座舱芯片的迭代历…

Docker 部署 Tomcat 并开放 8082 端口

本文目录 1. 是否安装 Docker2. 拉取 Tomcat 镜像3. 运行 Tomcat 容器4. 验证 Tomcat 容器运行5. 测试 Tomcat 访问6. 开放 8082 端口 1. 是否安装 Docker 可以通过下面的命令来验证是否安装了 Docker&#xff1a; docker --version可以看到&#xff0c;输入该命令后显示了 D…

Cesium.js基础使用(vue)

如何通过Cesium创建一个地图&#xff1a; 1、npm安装(这里使用1.95.0版本) npm i cesium1.95.0 -s 或 yarn add cesium1.95.0 -s 2、组件引入 import * as Cesium from "cesium/Cesium"; 3、容器创建 <div id"cesiumContainer" /> 4、核心类Vi…

创业项目分享 - 想赚大钱得学会偷懒

想创业赚钱&#xff0c;就不能偷懒&#xff0c;得卷死你的同行才行&#xff0c;为何今天话锋突转呢?请放心&#xff0c;这篇不是标题党&#xff0c;而是想要强调&#xff0c;在不同的阶段&#xff0c;对“偷懒”的定义是不一样的&#xff0c;因为不同的阶段&#xff0c;我们的…

ESP32(MicroPython) LCD1602 显示通过Socket通信接收的数据

本程序 实现了通过LCD1602 显示通过Socket通信接收的数据。由于外设驱动有滚动显示的特性并且每次显示要清除之前显示的内容&#xff0c;在显示字符前通过空格和换行清除之前显示的数据&#xff0c;并判断字符串长度&#xff0c;一行显示不下时分两行显示。 代码如下 #导入Pi…

C#对字符串的常用处理总结C#控制台

目录 C#用空格分隔的字符串string转换成字符数组string[]&#xff1b;字符串数组string[]转换成整型数组int[] 1、将用console.readline()获取的用空格分隔的string转换成string[] 2、将string[]转换成int[]&#xff08;c#3.0&#xff09; 截取指定字符串 C#RichTextBox截断…

ModaHub魔搭社区:Milvus 数据迁移工具 – MilvusDM

目录 Milvus 数据迁移工具 — MilvusDM 简介 功能介绍 Faiss to Milvus Milvus 数据迁移工具 — MilvusDM 简介 MilvusDM 是一款针对 Milvus 研发的数据迁移工具&#xff0c;支持 Milvus 数据传输以及数据文件的导入与导出&#xff1a; Faiss to Milvus&#xff1a;将未…

基于Transformer视觉分割综述

基于Transformer视觉分割综述 SAM &#xff08;Segment Anything &#xff09;作为一个视觉的分割基础模型&#xff0c;在短短的 3 个月时间吸引了很多研究者的关注和跟进。如果你想系统地了解 SAM 背后的技术&#xff0c;并跟上内卷的步伐&#xff0c;并能做出属于自己的 SAM…

获取齐治堡垒机任意用户登录权限

他一个人呆呆地坐在禾场边上&#xff0c;望着满天的星星&#xff0c;听着小河水朗朗的流水声&#xff0c;陷入了一种说不清楚的思绪之中。这思绪是散乱而飘浮的&#xff0c;又是幽深而莫测的。他突然感觉到&#xff0c;在他们这群山包围的双水村外面&#xff0c;有一个辽阔的大…

spring之BeanFactory

spring之BeanFactory DefaultListableBeanFactory示例代码类继承实现结构 BeanFactory是Bean工厂&#xff0c;所以很明显&#xff0c;BeanFactory会负责创建Bean&#xff0c;并且提供获取Bean的API。 DefaultListableBeanFactory 在Spring源码中&#xff0c;BeanFactory接口存…

ULTRAMAT 23红外气体分析仪

后面板接口图 485通信接口 7脚和9脚 模拟量接口 选装接口 635430034211014569720.pdf (chem17.com)https://img64.chem17.com/2/20140807/635430034211014569720.pdf 特此记录 anlog 2023年7月3日

redis从零开始(6)----分布式锁

场景 修改时&#xff0c;经常需要先将数据读取到内存&#xff0c;在内存中修改后再存回去。在分布式应用中&#xff0c;可能多个进程同时执行上述操作&#xff0c;而读取和修改非原子操作&#xff0c;所以会产生冲突。增加分布式锁可以解决这个问题 基本原理 同步锁&#xf…

14.PWM输出

1.通用定时器PWM概述&#xff1a; 2.PWM工作过程&#xff1a; 2.PWM模式1&PWM模式2&#xff1a; 3.向上计数配置&#xff1a; 4.PWM模式&#xff1a; 5.自动重载的预装载寄存器&#xff1a; 6.STM32定时器3输出通道引脚&#xff1a; 7.PWM输出库函数&#xff1a; PWM输出…

java 单元测试覆盖率调研

1、覆盖率工具对比 根据网上的资料搜索发现&#xff0c;现在常用的 java 单元测试覆盖率工具主要有&#xff1a; EmmaCoberturaJacocoClover(商用&#xff09; 工具JacocoEmmaCobertura原理使用 ASM 修改字节码修改 jar 文件&#xff0c;class 文件字节码文件基于 jcoverage,…

Squid代理服务器配置及CDN简介

Squid代理服务器配置及CDN简介 一、Squid介绍1、代理的工作机制2、代理服务器的概念3、代理服务器的作用4、Squid代理的类型 二、Squid搭建1、安装Squid服务2、构建传统代理服务器3、构建透明代理服务器4、ACL访问控制5、Squid日志分析6、Squid反向代理 三、CDN1、CDN简介2、CD…

vue项目打包后css js 加载不进来,路径不对的问题

问题描述&#xff1a;本地运行都是正常的&#xff0c;打包后出现css js 加载不进来&#xff0c;路径不对&#xff0c;接口调用地址不对出现undefined字段&#xff0c;如图&#xff1a; 网上差了很多资料&#xff0c;试了很多方法都不行&#xff0c;也有说是 publicPath: ./ 配置…

【Matlab】智能优化算法_正余弦优化算法SCA

【Matlab】智能优化算法_正余弦优化算法SCA 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 func_plot.m4.2 Get_Functions_details.m4.3 initialization.m4.4 main.m4.5 SCA.m 5.运行结果6.参考文献 1.背景介绍 尽管需要更多的函数评估&#xff0c;但文献表明&#xff0c…

【花雕】全国青少年机器人技术一级考试试卷(实操真题之三)

随着科技的不断进步&#xff0c;机器人技术已经成为了一个重要的领域。在这个领域中&#xff0c;机械结构是机器人设计中至关重要的一部分&#xff0c;它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说&#xff0c;了解机械结构的基础知识&#xff0c;掌…

MyBatis-Plus学习3 Wrapper条件构造器

组装查询Wrapper Testpublic void test01() {// 查询用户名包含a&#xff0c;年龄在20-30之间&#xff0c;邮箱信息不为null的用户信息QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.like("name", "a").between("…

Linux Shell脚本中的变量和流程控制

Linux Shell脚本中的变量和流程控制 Linux Shell脚本是一种方便的自动化工具&#xff0c;它可以帮助我们完成各种复杂任务。在本文中&#xff0c;我们将详细介绍Shell脚本中的变量和流程控制语句&#xff0c;以及如何使用它们编写高效、可读性强的脚本。 变量 在Shell脚本中&…