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…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
嵌入式面试常问问题
以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...
