2024.5.14晚训题解
非线性结构没懂的同学多去看看课程回放。
A题Overall Winner 题解
很基础的题目,输入字符串,用计数器去统计一下就好了。
因为赢的次数一样的时候优先判断前面的那个人赢,所以说两个人赢的次数相同的时候我们不必 去记录胜者。
#include<bits/stdc++.h>
using namespace std;
char s[200];
int main() {int n;scanf("%d%s",&n,s+1);int T=0;int A=0;char win;for(int i=1;i<=n;i++){if(s[i]=='A')A++;else T++;if(A>T)win='A';else if(A<T)win='T';}printf("%c",win);return 0;
}
B题Fill the Gaps 题解
不难发现,题目所谓的每次操作距离序列起点最近的相邻元素差的绝对值不为1的那一对 A i Ai Ai 其实就是从左往右处理过去找一找就行了。
每找到一对这样子的 A i Ai Ai 输出两数中间的所有数字,正序或者倒序
#include<bits/stdc++.h>
using namespace std;
int A[200];
int main() {int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&A[i]);}printf("%d ",A[1]);for(int i=2;i<=n;i++){if(abs(A[i-1]-A[i])!=1){if(A[i]>A[i-1]){for(int j=A[i-1]+1;j<A[i];j++){printf("%d ",j);}}else{for(int j=A[i-1]-1;j>A[i];j--){printf("%d ",j);}}}printf("%d ",A[i]);}return 0;
}
C题AtCoder Cards 题解
因为我们可以任意重新排列整个字符串,所以字符串的顺序并不影响这个题,我们要考虑两个字符串所包含的字母情况。
先分别记录两个字符串的字母数量,以及 @ @ @个数,因为 @ @ @符号是一种可以变的符号,注意,它只能变成atcoder ,所以有需要的时候我们再拿它来变。枚举26个字母,判断两个字符串关于这些字母的数量是不是一样的,如果不一样,那就要用@来变,如果变不出来那就是No ,注意变了以后现有的@数量要对应减去。
#include<bits/stdc++.h>
using namespace std;
char A[200005];
char B[200005];
int num_A[30];
int num_B[30];
bool vis[30];
int main() {scanf("%s%s",A+1,B+1);int n=strlen(A+1);vis['a'-'a'+1]=1;vis['t'-'a'+1]=1;vis['c'-'a'+1]=1;vis['o'-'a'+1]=1;vis['d'-'a'+1]=1;vis['e'-'a'+1]=1;vis['r'-'a'+1]=1;int cnt_A=0;int cnt_B=0;for(int i=1;i<=n;i++){if(A[i]=='@')cnt_A++;else num_A[A[i]-'a'+1]++; if(B[i]=='@')cnt_B++;else num_B[B[i]-'a'+1]++;}int ok=true;for(int i=1;i<=26;i++){if(num_A[i]==num_B[i])continue;if(num_A[i]>num_B[i]&&vis[i]){int le=num_A[i]-num_B[i];cnt_B-=le;if(cnt_B<0)ok=false;continue;}if(num_B[i]>num_A[i]&&vis[i]){int le=num_B[i]-num_A[i];cnt_A-=le;if(cnt_A<0)ok=false;continue;}ok=false;//程序走到这里说明 字母拥有情况不一样且变不了 }if(ok==true)printf("Yes");else printf("No");return 0;
}
D题 Bitmask 题解
又是一道关于二进制的题目,先复习一遍进制吧
X进制数其实就是满足逢X进1的数字
比如十进制数,逢十进一 , 9+1就变成了10
比如二进制数,逢二进一 ,0111 + 1 就变成了 1000 (注意这是二进制)
从右到左,每个位上面的数字看成“系数” ,从右到左每个位置的单位分别是X0 ,X1 ,X2 … 零次方就是1
所以一个X进制的数转换成十进制的数字怎么算呢?
从右到左,系数乘单位全加起来。
什么是位运算?
先看看&运算 两个数字A&B计算规则如下:
先把A B转换成长度一样的二进制串(从左往右是高位到低位)
然后对于每一位去单独做运算,1&1=1 其余为0
对应位把计算的数字落下来,就构成了答案的二进制
比如
0101110101 0101110101 0101110101 &
1101101010 1101101010 1101101010
答案0101100000
什么是或运算?
先看看 | 运算 两个数字A | B计算规则如下:
先把A B转换成长度一样的二进制串(从左往右是高位到低位)
然后对于每一位去单独做运算
1|1=1
1|0=1
0|1=1
0|0=0
对应位把计算的数字落下来,就构成了答案的二进制
比如
0101110101 0101110101 0101110101 |
1101101010 1101101010 1101101010
答案1101111111
什么是异或运算?
先看看 ^ 运算 两个数字A ^ B计算规则如下:
先把A B转换成长度一样的二进制串(从左往右是高位到低位)
然后对于每一位去单独做运算
1^1=0
1^0=1
0^1=1
0^0=0
对应位把计算的数字落下来,就构成了答案的二进制
比如
0101110101 0101110101 0101110101 ^
1101101010 1101101010 1101101010
答案1000011111
位运算(x<<i) 表示把x 从二进制位上整体左移 i 位
例如(1<<0) 表示把1的二进制整体左移0位,相当于不变
(1<<2)把1整体左移2位,也就是000001 -> 000100 答案是4
接下来我们看看这个问题咋处理
题目首先给我们一个串,含有0 ,1,?
给我们一个N。串里面的?可以任意变成0或者1
从而我们的串有一个可能值的集合T,题目问T集合里面不超过N的最大值是多少,如果没有就输出-1 .
我们思考一个问题,刚刚讲了二进制,从左到右是高位到低位。
那么我们的串,如果不是?的位置,就已经是确定的值了
所以我们的串构成的最小值的情况就是?全部取0.
我们先计算出串的最小值,枚举一遍串,先算出定值(已经固定数字的位置),然后根据贪心的思想,从最高位开始向低位枚举,寻找? ,看看当前这个?能不能变成1 加入我们的答案。注意这里所说的1是二进制某个位上面的1,不是十进制数字1 .
举例: ?01010 我们让?变1 得到101010 新增加的是 25
因此我们就看高位的?能不能变成1 ,且数值不超过N
能的话就变,不能的话就不变。
有一个知识点:
如果你的第i个位置放1,那么i以后的所有低位都放1 都没有这个2i 大
推理: 假如说0的位置是i
根据二进制的规则,0111111111111 这个数字 +1 构成逢二进一,才能变成 1000000000000,所以说一个高位的1,比它后面所有低位都放1 是还要大的
#include<bits/stdc++.h>
using namespace std;
char s[100];
char b[100];
char T[100];
char S[100];
int main(){long long int n;scanf("%s%lld",s+1,&n);int len=0;int m=strlen(s+1);long long int ans=0;for(int i=1;i<=64;i++){if(i<=64-m)S[i]='0';else S[i]=s[i-(64-m)];if(S[i]=='1'){ans=ans | (1ll << (64-i)); //这个写法是位运算,//直接把2的次方或运算上去,//因为ans一开始是0,每个二进制位都是0,0或上1这个位一定就是1}}//补齐前导0 转换成64位 if(ans>n){// ?全是0 都比N大 printf("-1");return 0;}for(int i=1;i<=64;i++){//高位到低位 if(S[i]=='?'){//看看能不能放进去1 其余? 默认为0 if((ans|(1ll << (64-i)))<=n){ans=ans|(1ll << (64-i)); }} }printf("%lld",ans);return 0;
}相关文章:
2024.5.14晚训题解
非线性结构没懂的同学多去看看课程回放。 A题Overall Winner 题解 很基础的题目,输入字符串,用计数器去统计一下就好了。 因为赢的次数一样的时候优先判断前面的那个人赢,所以说两个人赢的次数相同的时候我们不必 去记录胜者。 #include<…...
jQuery的选择器与自带函数详解
在前端开发中,jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画以及AJAX交互等操作。本文将通过一个示例页面,详细介绍jQuery的选择器和一些常用的自带函数。 示例代码优化 首先,我们来优化和完…...
Next.js与SSR:构建高性能服务器渲染应用
1. 创建项目 通过create-next-app脚手架创建一个新的Next.js项目: npx create-next-app my-app cd my-app2. 自动SSR 在Next.js中,每个.js或.jsx文件的组件都会被自动处理为SSR页面。例如,创建一个pages/index.js文件: // pag…...
什么是MVC?什么是SpringMVC?什么是三层架构?
文章目录 应用分层什么是MVC?什么是 SpringMVC?三层架构三层架构和MVC的关系 应用分层 在讲解什么是MVC之前,先来理解一下什么是应用分层。 应用分层是一种软件开发设计思想,将应用程序划分成N个层次,每个层次都分别负责自己的…...
基于springboot+vue+Mysql的在线答疑系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
ssl证书免费申请指南
同学们可以私信我加入学习群! 正文开始 前言一、购买证书二、创建证书三、 验证证书等待出现如下页面,说明申请成功:  总结 前言 今天为大…...
Java构造方法详解
在Java方法内部定义一个局部变量时,必须要初始化,否则就会编译失败,如下: 要让上述代码通过编译,只需在使用a之前给a赋一个初始值即可 如果是对象:下面用一个日期类演示 我们没有给年月日赋值,…...
Spring WebFlux:响应式编程
在软件开发领域,随着互联网应用的规模和复杂性不断增加,传统的编程模型逐渐暴露出一些局限性,尤其是在面对高并发、大规模数据流处理等场景时。为了应对这些挑战,响应式编程(Reactive Programming)应运而生…...
uniapp、web网页跨站数据交互及通讯
来来来,说说你的创作灵感!这就跟吃饭睡觉一样,饿了就找吃的,渴了就倒水张口灌。 最近一个多月实在是忙的没再更新日志,好多粉丝私信说之前的创作于他们而言非常有用!受益菲浅,这里非常感谢粉丝…...
2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24
一、简介:libyuv 最初是由Google开发的,主要是为了支持WebRTC项目中的视频处理需求。用于处理YUV格式图像数据的开源库。它提供了一系列的函数,用于转换、缩放、旋转和其他操作YUV图像数据。 二、执行下面的命令下载和安装libyuv。 git clo…...
怎么给视频加水印?2招轻松搞定
在数字媒体时代,视频水印作为一种有效的版权保护手段,被广泛应用于各种场景。给视频添加水印不仅可以防止内容被恶意盗用,还能增加视频的辨识度,提升品牌形象。本文将为您介绍2种简单易行的方法,教您怎么给视频加水印&…...
SpringBootWeb 篇-深入了解请求响应(服务端接收不同类型的请求参数的方式)
🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 请求响应概述 1.1 简单参数 1.2 实体参数 2.3 数组集合参数 2.4 日期参数 2.5 json 参数 2.6 路径参数 3.0 完整代码 1.0 请求响应概述 当客户端发送不同的请求参…...
实验十 智能手机互联网程序设计(微信程序方向)实验报告
实验目的和要求 完成以下页面设计。 二、实验步骤与结果(给出对应的代码或运行结果截图) Wxml <view class"container"> <view class"header"> <view class"logo"…...
Python图形复刻——绘制母亲节花束
各位小伙伴,好久不见,今天学习用Python绘制花束。 有一种爱,不求回报,有一种情,无私奉献,这就是母爱。祝天下妈妈节日快乐,幸福永远! 图形展示: 代码展示: …...
【算法优选】 动态规划之子数组、子串系列——壹
文章目录 🎋前言🎋最大子数组和🚩题目描述🚩算法思路🚩代码实现 🌴环形子数组的最大和🚩题目描述🚩算法思路:🚩代码实现 🌲乘积最大子数组&#x…...
PXE+Kickstart无人值守安装安装Centos7.9
文章目录 一、什么是PXE1、简介2、工作模式3、工作流程 二、什么是Kickstart1、简介2、触发方式 三、无人值守安装系统工作流程四、实验部署1、环境准备2、服务端:关闭防火墙和selinux3、添加一张仅主机的网卡4、配置仅主机的网卡4.1、修改网络连接名4.2、配IP地址4…...
C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能
文章目录 前言一、注意二、源码1. test.c源文件2. contact.h头文件3. contact.c源文件 总结 前言 C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能 一、注意 在通讯录菜单栏使用枚举定义PeoInfo类型时,每个结构体类型的成员…...
flowable多对并发网关跳转的分析
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…...
【嵌入式——QT】QT集成Ymodem协议使用UDP进行传输
【嵌入式——QT】QT集成Ymodem协议使用UDP进行传输 Ymodem协议帧的数据格式帧头包号校验 通讯过程握手信号起始帧数据帧结束帧代码块 Ymodem命令 QT实现YmodemFileTransmit.hYmodemFileTransmit.cppBootLoader.hBootLoader.cppYmodem协议源码 Ymodem协议 帧的数据格式 帧头、…...
python笔记(17)输入输出
一、标准输入与输出简介 Python通过内置的sys模块管理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。但对大多数简单应用而言,直接使用内置函数就足够了。 二、输入:inpu…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...
