AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)
目录
4806. 首字母大写
题目描述:
实现代码:
4807. 找数字
题目描述:
实现代码:
回溯(超时):
原理思路:
贪心:
原理思路:
4808. 构造字符串
问题描述:
实现代码与解析:
kmp:
原理思路:
4806. 首字母大写
题目描述:
给定一个由大小写字母构成的单词。
如果单词的首字母为小写字母,则请你将该首字母转换为对应大写字母。
如果单词的首字母为大写字母,则不做任何变化。
输出最终的单词。

实现代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin >> s;if('A' <= s[0] && s[0] <= 'Z' ){cout << s <<endl;}else{s[0]-= 32;cout << s <<endl;}
}
或则直接这样写:
#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin >> s;s[0] = toupper(s[0]);cout << s <<endl;
}
4807. 找数字
题目描述:
给定一个正整数 m 和一个非负整数 s。
请你找到长度为 m且各位数字之和为 s 的最小和最大非负整数。
要求所求非负整数不得包含前导零。

实现代码:
回溯(超时):
#include <bits/stdc++.h>
using namespace std;
int result1 = 0;//求最大
int result2 = INT_MAX;//求最小
vector<int> path;
void backtrack1(int m, int s, int index)
{if (path.size() == m){int sum1 = 0;for (int i = 0; i < path.size(); i++){sum1 += path[i];}if (sum1 == s){int sum = 0;for (int i = 0; i < path.size(); i++){sum = sum * 10 + path[i];}if (sum > result1) result1 = sum;if (sum < result2) result2 = sum;} return;}int i = 0;if (path.empty()){i = 1;}for (i; i < 10 && i <= s - index; i++){path.push_back(i);backtrack1(m, s, index + i);path.pop_back();}
}int main()
{int min = INT_MAX;int max = 0;int m;//组成个数int s;//数cin >> m;cin >> s;//排除无解if(s > m * 9 || s == 0 && m > 1){cout << "-1 -1" << endl;}else{backtrack1(m, s, 0);cout << result2 << " " << result1 << endl; }return 0;
}
原理思路:
不要用回溯,数据过大就会超时的,比如100,100。就不解释这种方法了,而且麻烦又不对。
贪心:
#include <bits/stdc++.h>
using namespace std;int main()
{int m;//组成个数int s;//数cin >> m;cin >> s;//排除无解if((s > m * 9) || (s == 0 && m > 1)){cout << "-1 -1" << endl;}else{int sum = s;string a(m, ' ');//最大string b(m, ' ');//最小for(int i = 0; i < m; i++){int t = min(sum, 9);a[i] = t + '0';sum -= t; //用过的去掉}sum = s;//别忘了这里再给sum赋一下值for(int i = m - 1; i > 0; i--){int t = min(sum - 1, 9);//9 和 sum 之间取最小,给最高位至少留一个1,最高位不能为0,当然最高位不一定为1b[i] = t + '0';sum -= t;}b[0] = sum + '0';//最后把第一位添上cout << b <<" "<< a;}return 0;
}
原理思路:
求最大,就从第一位开始取,能取多大取多大,最大不是 9 么,但是肯定不能超过 sum 吧,所以就在这两个之间取最小就行。
求最小,正好相反,从最后一位开始取,记得sum要留一个1,因为首位不能为 0 吧,所以最小就为1,不过首位也不一定为 1,所以最后剩多少就直接赋值就行。
4808. 构造字符串
问题描述:
给定一个长度为 n 的由小写字母构成的字符串 t 以及一个整数 k。
请你构造一个字符串 s,要求:
- 字符串 s 恰好有 k 个子串等于字符串 t。
- 字符串 s 的长度尽可能短。
保证一定存在唯一解。

实现代码与解析:
kmp:
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;string s;int k;cin >> n;cin >> k;cin >> s;string result = "";//求next数组vector<int> next(n, 0);int j = 0;next[0] = 0;for (int i = 1; i < n; i++){while (s[i] != s[j] && j > 0) j = next[j - 1];if (s[i] == s[j]) j++;next[i] = j;}string diff = s.substr(0, n - next[n - 1]);//后缀部分//把非后缀部分先重复 k 加上for (int i = 0; i < k ; i++){result += diff;}result += s.substr(0, next[n - 1]);//最后再加一个最长公共后缀cout << result << endl;
}
原理思路:
很简单啊,明显就是kmp,当然可能也有其他做法吧,kmp找出最长公共前后缀,然后找规律就可以,根据样例,可以看出,可以结果先加上非后缀部分 k 个,然后补上后缀,或则先加上前缀,然后再加上 k 个非前缀部分,一样的,找个规律而已。例如例子一中,可以 a ba ba ba ba这样或则 ab ab ab ab a 这样模拟,都可以。其他就没什么了,会 kmp 这题就应该会了,要是不会就建议去网上查一下,kmp 不同习惯的写法也不一样。
相关文章:
AcWing、第 90 场周赛:4806. 首字母大写、4807. 找数字、4808. 构造字符串(C++)
目录 4806. 首字母大写 题目描述: 实现代码: 4807. 找数字 题目描述: 实现代码: 回溯(超时): 原理思路: 贪心: 原理思路: 4808. 构造字符串 问题…...
跟同事杠上了,Apache Beanutils为什么被禁止使用?
收录于热门专栏Java基础教程系列(进阶篇) 在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写…...
Golang 模糊测试的使用
一 背景 在 Go 1.18 中,Go 语言新增模糊测试(Fuzzing)。Fuzzing,又叫fuzz testing,中文叫做模糊测试或随机测试。其本质上是一种自动化测试技术,更具体一点,它是一种基于随机输入的自动化测试技术,常被用于发现处理用户输入的代码中存在的bug和问题。模糊测试和常规的功能…...
RSA公钥加密机制跨语言应用实战
在公钥密码学中(也称为非对称密码学),加密机制依赖于两个密钥:公钥和私钥。公钥用于加密消息,而只有私钥的所有者才能解密消息。实际应用中通常需要对公钥和私钥进行序列化,然后分发密钥实现在不同场景、不同语言环境中使用。本文…...
P7面试送命题
面试总结,对标市场P7。什么叫送命题,一道题回答不上来面试直接挂的题目。JVM 运行时数据区域内存回收机制GC root有哪些volatile原理synchronize原理JDK 集合家族介绍HashMap原理ConcurrentHashMap原理Thread生命周期ThreadPoolExecutor生命周期、实例化…...
零信任-微软零信任介绍(2)
微软零信任是什么? Microsoft Zero Trust 是一种安全架构,旨在在没有信任任何设备、用户或网络的情况下保护网络。这种架构使用多重验证和分段技术,以确保每个请求和资源的安全性。 零信任不假定任何内部用户或设备是安全的ÿ…...
C++中对象调用成员函数this指针的作用
C中对象调用成员函数this指针的作用 Sales_data total;//定义对象 total.isbn();//调用对象中的成员函数isbn成员函数isbn()通过一个名为this的额外隐式参数来访问调用它的对象total。当我们调用一个成员函数时,用请求该函数的对象地址初始化this。 例如࿰…...
JavaScript------数组
目录 一、简介 1、什么是数组? 2、创建数组 3、数组的数据类型 4、向数组中添加元素 5、读取数组中的元素 6、实例属性:length 二、遍历数组 方式一:for循环 方式二:for...of 三、数组方法(常用)…...
迷宫《1》
一天蒜头君掉进了一个迷宫里面,蒜头君想逃出去,可怜的蒜头君连迷宫是否有能逃出去的路都不知道。看在蒜头君这么可怜的份上,就请聪明的你告诉蒜头君是否有可以逃出去的路。输入格式第一行输入两个整数 �n 和 �m&#x…...
剑指 Offer 20. 表示数值的字符串
剑指 Offer 20. 表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 ‘e’ 或 ‘…...
阻抗匹配之反射波形测量
稍微接触过高速信号的朋友,一定对阻抗匹配和信号反射都有所了解,甚至可以按照公式,把反射波形一路推导出来。但是,纸上得来终绝浅,绝知此事要躬行。 今天,我们就来实测一下信号反射波形,测试环…...
微信小程序 java家校通Springboot中小学家校联系电子作业系统
小程序前端框架:uniapp 小程序运行软件:微信开发者 后端技术:javaSsm(SpringSpringMVCMyBatis)vue.js 后端开发环境:idea/eclipse 数据库:mysql 通过对各种资料的收集,了解到“校讯通”是联系社会的窗口,是实现家校联系工作和学校…...
Fluent Python 笔记 第 8 章 对象引用、可变性和垃圾回收
本章先以一个比喻说明 Python 的变量:变量是标注,而不是盒子。如果你不知道引用式变量是什么,可以像这样对别人解释别名。 然后,本章讨论对象标识、值和别名等概念。随后,本章会揭露元组的一个神奇特性:元…...
转义字符的分类
什们是转义字符 可显示字符在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、和空格符等都是可显示字符。 控…...
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 一、题目描述: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出…...
飞速创新更新IPO招股书:计划募资约14亿元,向伟为实际控制人
近日,深圳市飞速创新技术股份有限公司(下称“飞速创新”)预披露更新招股书,准备在深圳证券交易所主板上市。本次冲刺上市,飞速创新计划募资13.54亿元,招商证券为其保荐机构。 据介绍,飞速创新专…...
JUC(java.util.concurrent) 的常见类
1.ReentrantLock 可重入互斥锁. 和 synchronized 定位类似, 都是用来实现互斥效果, 保证线程安全. ReentrantLock 也是可重入锁. "Reentrant" 这个单词的原意就是 "可重入. ReentrantLock 的用法: lock(): 加锁, 如果获取不到锁就死等.trylock(超时时间):…...
Angular4 中 ckeditor5 插件的使用
Angular4 中 ckeditor5 插件的使用 0 环境、新建项目 环境: Windows10Angular/cli1.4.10(安装 Angular 的过程略过,Angular4 版本比较古老,这也导致项目安装插件及其他操作比较麻烦) 1. ckeditor5 官方用法 基础用…...
[python刷题模板] 前缀函数/next数组/kmp算法
[python刷题模板] 前缀函数/next数组/kmp算法 一、 算法&数据结构1. 描述2. 复杂度分析3. 常见应用4. 常用优化二、 模板代码1. 裸前缀函数2. 树上kmp3. 裸kmp三、其他四、更多例题五、参考链接一、 算法&数据结构 1. 描述 前缀函数和next数组基本上是一个东西&#…...
rust 程序设计语言入门(1)
本文是阅读《Rust程序设计语言》的学习记录,配合视频《Rust编程语言入门教程》食用更佳 环境搭建 windows下载rustup_init.exe,点击安装,默认选择msvc的toolchain,一路default即可 解决下载慢的问题,在powershell中修…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
