牛客周赛 Round 99

赛时成绩如下:

 

A. Round 99

题目描述
对于给定的五位整数,检查其中是否含有数字 99;换句话说,检查是否存在相邻的两个数位,其值均为 。

解题思路: 检查相邻的两个数字是否均为9

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
void solve() {int n;cin >> n;string a = to_string(n);for (int i = 1; i < a.size(); i++) {if (a[i] == a[i - 1] && a[i] == '9') {cout << "YES" << '\n';return;}}cout << "NO" << '\n';
}
int main() {int t = 1;// cin>>t;while (t--) {solve();}return 0;
}

 B. 缺陷型电脑

题目描述

Tk 有一台缺陷型电脑,它在输出内容之前必须先加载 ASCII 表;
这台电脑可以为每次输入生成一个长度为 x 的 ASCII 表,该表包含编码值从 1 到 x 的所有字符;

现在给定一个仅由可见字符集合构成的字符串 s。请你计算:要输出 s 中的所有字符,至少需要多长的 ASCII 表。

【名词解释】

可见字符集为 ASCII 码在 33 到 126 范围内的可见字符。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。

解题思路:包含从1-x的所有字符, 同时表的长度为x

因此, 直接找出输入字符中最大的即为答案 

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
void solve() {int n;string s;cin >> n >> s;int mx = *max_element(s.begin(), s.end());cout << mx << '\n';
}
int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

 C.小苯的洞数构造

解题思路:

小苯对数字的 "洞数" 十分感兴趣,即数字中含有的封闭图形个数,如下是每个数位的 "洞数" 表:
现在小苯给定了一个整数 k,他希望你构造一个值最小的,满足所有数位中的 "洞数" 总和恰好为 k 的正整数(不包含前导 0 ),请你帮帮他吧。 

解题思路:

满足由洞数构造出的值最小

 

1 洞:4, 6, 9

2 洞:8

0 洞:1, 2, 3, 5, 7 
为了让生成的正整数数值最小,第一要点是“尽量少的位数”——位数少的数值更小

“8”有 2 个洞,用它能最快凑洞数,减少总位数

余下的 1 个洞(如果目标洞数为奇数),用“4”来补;虽然“0”也是 1 洞,但不能出现在首位;在多位数里放“4”比放“6”“9”都更小

特殊情况

当 𝑘=0
k=0 时,需要一个“零洞”且最小的正整数,显然是 “1”

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
void solve() {int k;cin >> k;if (k == 0) {cout << 1 << '\n';return;}int cnt = k / 2;if (k & 1) {cout << 4;}for (int i = 0; i < cnt; i++) {cout << 8;}cout << '\n';
}
int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

 D. 前缀和

题目描述

小红有一个由正整数组成的数组 a,但是她没有告诉你数组中的元素具体是什么,你只知道这个数组的元素各不相同,且其前缀数组 s 对于给定的一个 x,其任意一项均满足:,∙对于数组的第 k 个元素,当 ⌊kx⌋ 为偶数时,sk=a1+a2+⋯+ak​ 也是偶数;
,∙对于数组的第 k 个元素,当 ⌊kx⌋ 为奇数时,sk=a1+a2+⋯+ak 也是奇数。
除此之外,你还知道这个数组是满足条件的所有数组中字典序最小的。小红现在来问你,这个数组中第 p 个元素是多少,你能快速的回答她吗?
【名词解释】
字典序:从两个数组的第一个元素开始逐个比较,直到找到第一个不同的元素,较小元素所在的数组的字典序较小。

解题思路: 以x为周期, 前面全是偶数, 最后一位是奇数

计算 a = ⌊p/x⌋:

这表示 p 所在的“块”编号(每 x 个元素为一组)

判断 p 是否是 x 的倍数:

如果 p % x == 0,说明 p 是当前块的最后一个元素

否则,p 位于块的中间

计算 a[p]:

如果 p 是块的最后一个元素(p % x == 0),则 a[p] = 2a - 1

否则,a[p] = 2(p - a)

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
void solve() {ll x, p;cin >> x >> p;ll a = p / x;if (p % x == 0) {cout << 2 * a - 1 << '\n';} else {cout << 2 * (p - a) << '\n';}
}
int main() {int t;cin >> t;while (t--) {solve();}return 0;
}

  E. 小宇

题目描述

给定一个长度为 n 的数组 {a1,a2,…,an}。
你可以进行以下操作多次:
,∙选择一个整数 x,将所有满足 ai=x 的元素分别修改为它们的下标 i;

问 最少需要进行多少次操作,才能使数组变为严格单调递增?

严格单调递增:若数组 {b1,b2,…,bn} 对任意下标 i<ji<ji<j 都满足 bi<bj,则称其为严格单调递增数组。

解题思路:

首先经过观察可知,每个位置的数字一定不小于它的下标,且若进行了修改,一定是对一段前缀进行修改,因此只需要从后往前找到第一个需要修改的位置,并把前缀里面所有出现过的数字的值的出现的最大下标范围内的数字都进行修改即可,注意,根据修改规则和分析,只需修改那些值不等于下标的位置即可,可用set去重 

public class Main{public static void main(String args[]){Scanner sc=new Scanner(System.in);for(int i=sc.nextInt();i!=0;i--){int n=sc.nextInt(),a[]=new int[n+5],maxIdx=0;Map<Integer,Integer> map=new HashMap<>();for(int j=1;j<=n;j++){a[j]=sc.nextInt();map.put(a[j],Math.max(j,map.getOrDefault(a[j],0)));}a[n+1]=(int)2e9;for(int j=n;j>0;j--){if(a[j]>=a[j+1]||a[j]<j){for(int k=1;k<=j;k++){if(a[k]!=k){maxIdx=Math.max(maxIdx,map.get(a[k]));}}break;}}Set<Integer> set=new HashSet<>();for(int j=1;j<=maxIdx;j++){if(a[j]!=j){set.add(a[j]);}}System.out.println(set.size());}}
}

 F. 汉堡猪猪分糖果

题目描述

汉堡猪猪有 n 颗糖果,他想把糖果全部分给 m 个小朋友。
每个小朋友至少要分到一颗糖果,否则他们会生气。他想知道,如何分配才能让所有小朋友分到的糖果数量的 按位与最大?

解题思路:

1.贪心策略:
从高位到低位检查,优先保证高位的 1,因为高位的 1 对结果的影响更大
如果能分配所有小朋友的某一位为 1,就直接分配;否则,尝试部分分配
2.对于每一位 j,计算分配 1 的最小糖果数 (1 << j) * m
如果糖果不足,尝试部分分配,确保剩余的糖果可以满足其他约束

import java.util.*;
public class Main{public static void main(String args[]){Scanner sc=new Scanner(System.in);for(int i=sc.nextInt();i!=0;i--){long n=sc.nextInt(),m=sc.nextInt(),ans=0;for(int j=30;j>=0;j--){long cur=(1L<<j)*m;if(n>=cur){//这一位可以全是1n-=cur;ans|=1<<j;}else{cur-=m;//先测试一下可否后边全为1if(n>cur){//说明这一位后边全为1的话,还有剩余,导致后边的数字不应定按位与得到全1,那就想办法使得后边的数字尽可能大//n-k*(1<<j)<=costn-=(1<<j)*((n-cur-1)/(1<<j)+1);}}}System.out.println(ans);}}
}

 感谢大家的点赞和关注,你们的支持是我创作的动力!

 

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

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

相关文章

从0到1搭建个人技术博客:用GitHub Pages+Hexo实现

一、为什么要搭建个人技术博客&#xff1f; 在技术圈&#xff0c;拥有个人博客的好处不言而喻&#xff1a; 简历加分项&#xff1a;面试官更青睐有技术沉淀的候选人知识系统化&#xff1a;输出倒逼输入&#xff0c;加深技术理解人脉拓展&#xff1a;吸引同行关注&#xff0c;…

Ubuntu22.04 设置显示存在双屏却无法双屏显示

文章目录一、背景描述二、解决方法一、背景描述 回到工位后&#xff0c;发现昨天离开时还可正常显示的双屏&#xff0c;今早ubuntu22.04 的设置界面显示有双屏&#xff0c;但外接的显示屏无法正常显示。 首先&#xff0c;查看当前图像处理显卡是否为N卡&#xff0c;没错&#…

高亚科技签约奕源金属,助力打造高效智能化采购管理体系

深圳市奕源金属制品有限公司近日&#xff0c;国内企业管理软件服务商高亚科技与深圳市奕源金属制品有限公司&#xff08;以下简称“奕源金属”&#xff09;正式签约&#xff0c;双方将基于高亚科技自主研发的8Manage SRM采购管理系统&#xff0c;共同推动奕源金属采购管理的数字…

数据结构之map

map的基本介绍我们常常把map称之为映射&#xff0c;就是将一个元素&#xff08;通常称之为key键&#xff09;与一个相对应的值&#xff08;通常称之为value&#xff09;关联起来&#xff0c;比如说一个学生的名字&#xff08;key&#xff09;有与之对应的成绩&#xff08;value…

vue3 canvas 选择器 Canvas 增加页面性能

文章目录Vue3 选择器 Canvas 增加页面性能基于Vue3 Composition API和Canvas实现的交互式选择器&#xff0c;支持PC端和移动端的拖动选择、多选取消选择功能vue3组件封装html代码Vue3 选择器 Canvas 增加页面性能 基于Vue3 Composition API和Canvas实现的交互式选择器&#xf…

Python 实战:打造多文件批量重命名工具

引言在实际运维、测试、数据分析、开发流程中&#xff0c;我们经常会处理成百上千条命令操作&#xff0c;例如&#xff1a;各种脚本任务&#xff08;启动、备份、重启、日志查看&#xff09;数据处理流程&#xff08;爬取 → 清洗 → 统计 → 可视化&#xff09;配置自动化&…

设计模式笔记_结构型_代理模式

1. 代理模式介绍代理模式是一种结构型设计模式&#xff0c;它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常在客户端和目标对象之间起到中介作用&#xff0c;能够在不改变目标对象的前提下增加额外的功能操作&#xff0c;比如延迟初始化、访问控制、日志记录等…

C语言<数据结构-单链表>(收尾)

上篇博客我将基础的尾插、尾删、头插、头删逐一讲解了&#xff0c;这篇博客将对上篇博客进行收尾&#xff0c;讲一下指定位置操作增删以及查找这几个函数&#xff0c;其实大同小异&#xff1a;一.查找函数&#xff1a;查找函数其实就是一个简单的循环遍历&#xff0c;所以不加以…

十年架构心路:从单机到云原生的分布式系统演进史

十年架构心路&#xff1a;从单机到云原生的分布式系统演进史 这里写目录标题十年架构心路&#xff1a;从单机到云原生的分布式系统演进史一、技术生涯的起点&#xff1a;单体架构的黄金时代1.1 典型技术栈1.2 记忆深刻的故障二、分布式架构转型期2.1 服务化拆分实践2.2 分布式事…

使用docker搭建nginx

安装docker 和 docker compose验证docker版本配置docker目录配置代理&#xff0c;使docker能访问外网能否ping通最后直接拉入镜像即可docker pull nginx

Intel新CPU助攻:微软Copilot+将登陆台式电脑

微软的Copilot PC计划已经推出一年多&#xff0c;但目前仅支持平板电脑和笔记本电脑&#xff0c;以及少数迷你电脑。 随着Intel下一代桌面处理器——代号为“Arrow Lake Refresh”的推出&#xff0c;Copilot PC功能有望扩展到桌面计算机。 要支持Copilot PC的所有功能&#xff…

【Kubernetes】跨节点 Pod 网络不通排查案例

最近在部署一个集群环境的时候&#xff0c;发现集群中一个子节点与其他子节点不通&#xff0c;而 master 节点可与任何子节点互通&#xff0c;通过抓包排查后&#xff0c;发现是 Linux 路由决策导致的。因此&#xff0c;在此记录下来&#xff0c;希望对大家有所帮助。1、环境及…

【算法训练营Day11】二叉树part1

文章目录理论基础二叉树的递归遍历前序遍历中序遍历后序遍历总结二叉树的层序遍历基础层序遍历二叉树的右视图理论基础 二叉树在结构上的两个常用类型&#xff1a; 满二叉树完全二叉树 在功能应用上的比较常用的有&#xff1a; 二叉搜索树&#xff1a; 节点有权值、遵循”左…

Flutter 之 table_calendar 控件

1.库导入在pubspec.yaml文件中dev_dependencies:table_calendar: ^3.2.02. 代码编写TableCalendar(daysOfWeekHeight: 20,availableGestures: AvailableGestures.horizontalSwipe,firstDay: DateTime.now().subtract(const Duration(days: 365)),lastDay: DateTime.now(),cal…

【leetcode】1486. 数组异或操作

数组异或操作题目题解题目 1486. 数组异或操作 给你两个整数&#xff0c;n 和 start 。 数组 nums 定义为&#xff1a;nums[i] start 2*i&#xff08;下标从 0 开始&#xff09;且 n nums.length 。 请返回 nums 中所有元素按位异或&#xff08;XOR&#xff09;后得到的…

php7.4使用 new DateTime;报错 Class DateTime not found

php7.4使用 new DateTime;报错Uncaught Error: Class ‘app\home\c\DateTime’ not found 查了半天资料&#xff0c;最后找到了解决办法 DateTime 是 php 内置的类&#xff0c;不隶属于任何命名空间&#xff0c;如果你需要在命名空间中使用须有 \ 声明&#xff0c;解决办法就是…

Gartner《构建可扩展数据产品建设框架》心得

一、背景与价值 1.1 “数据产品”为什么忽然重要? 传统模式:业务提出需求 → IT 建数据集 → ETL 管道爆炸 → 维护成本指数级上升。 新范式:把“数据”包装成“产品”,以产品思维迭代演进,强调复用、自助、可扩展。 Gartner 观察到:大量组织把“报表”或“数据仓库”重…

CentOS/RHEL LVM 磁盘扩展完整教程

CentOS/RHEL LVM 磁盘扩展完整教程&#x1f4dd; 前言 在Linux系统管理中&#xff0c;磁盘空间不足是经常遇到的问题。特别是在生产环境中&#xff0c;当根分区空间告急时&#xff0c;我们需要通过添加新磁盘来扩展存储空间。本教程将详细介绍如何在CentOS/RHEL系统中使用LVM&a…

LVGL应用和部署(用lua做测试)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】嵌入式产品做好了&#xff0c;下面就是测试和量产了。以按键屏幕的开发模式为例&#xff0c;如果仅仅是简单的功能测试&#xff0c;那还比较好解决&…

phpstudy搭建pikachu

一.启动mysql和nginx服务二.修改靶场文件参数点击管理打开根目录&#xff0c;将下载好的靶场源文件解压到www目录下三.找到此文件用记事本打开四.修改配置文件五.打开浏览器,输入127.0.0.1/pikachu六.按照步骤初始化心得体会&#xff1a;如果mysql启动又立刻停止&#xff0c;大…