牛客周赛 Round 54 (A~E)

#牛客周赛 Round 54 (A~E)

前言:
以后会定时更新很多比赛的题解  希望借此让自己坚持赛后补题  
要不然写完就结束 自己水平没有一点提高  本人很菜所以不会更新
太难的题  加油!!!

1. ​清楚姐姐的糖葫芦

题目描述 :
输出字符‘o’个数

#include<bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int, int>pii;
const int N = 1e3 +10, MOD= 1e9+7;void solve(){string str;cin >> str;int res = 0;for(int i = 0; i < str.length(); i++){if(str[i] == 'o')res++;}	cout << res << endl;}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;//cin >> t;while(t--) solve();return 0;
}

很简单的签到题 唯一全对的

2. 清楚姐姐买竹鼠

题目描述 :
清楚姐姐买竹鼠,a 元可以买一只竹鼠,b 元可以买三只竹鼠,问至少买 x 只竹鼠要花多少钱。

#include<bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int, int>pii;
const int N = 1e3 +10, MOD= 1e9+7;void solve(){int a, b, x;cin >> a >> b >> x;int ans = 0;if(b < a*3){int t = x/3;int t2 = x%3;ans = t*b+ min(a*t2, b); //如果b的价格小于a*剩余鼠的数量则 可以用b元买三只鼠}else{ans = a*x;}cout << ans << endl;}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;//cin >> t;while(t--) solve();return 0;
}

原题目这么描述的读起来有点怪 导致我就拿了90 他这个买x只鼠 可以多余x只鼠 求至少x只鼠的最小价格

3. 竹鼠饲养物语

题目描述 :
鼠鼠快速成长饲料一共分为 m 个等级,初始时全部竹鼠都是零级竹鼠,投喂一袋“鼠鼠快速成长饲料I ”可以升级为一级竹鼠,继续投喂“鼠鼠快速成长饲料 II ”可以升级为二级竹鼠,……。需要注意的是,你不能越级投喂,例如,向零级竹鼠投喂“鼠鼠快速成长饲料 II ”没有任何效果
清楚一共有 n 袋饲料和无限多的零级竹鼠,问最多可以进行多少次有效投喂。

给定一个数组, 问其中可以连续的累加值是多少

#include<bits/stdc++.h>
using namespace std;
#define int long long 
typedef pair<int, int>pii;
const int N = 1e3 +10, MOD= 1e9+7;void solve(){int n, m;cin >> n >> m;multiset<int>S;for(int i = 0; i < n; i++){int a;cin >> a;S.insert(a);}int ans = 0;int tmp = 1e9;for(int i = 1; i <= m; i++){if(S.find(i) == S.end()) break;tmp = min((int)S.count(i), tmp);ans += tmp;}cout << ans << endl;
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;//cin >> t;while(t--) solve();return 0;
}

比时 没考虑 如果前面的值的数量少于 他后面下一个值的数量 则有效的时前面较小的数量 而不是一昧着加连续的数量

没解出来的

4. 清楚姐姐跳格子

题目描述 :
从1号格子 走到n号格子, 每个格子有一个数 可以向右或向左走该格子数的因子步 问最少走几步到n
分析 :
由于每个格子上都是正整数, 所以都有因子1, 所以肯定有一种可以一直向右 每次走一个的方法 这样要走n-1步。
最优情况是是什么呢?就是当所在的格子有个因子为(n-1) 这样一部就可以到达终点。
所以在每个格子 可以走到终点的步数一定在1~n-1,
所以可以用bfs来求解此题 从1号格子开始枚举 判断其可以走的步数 到达下一个格子

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>pii;
const int N = 1e3+ 10;bool vis[N];//判断该节点是否已走过//宽搜 
void bfs(int n, vector<int>&a) {queue<pii>q;//宽搜队列  pii第一个存步数, 第二个存到达的节点 q.push({0,1});//首先 把0 和 开始1号节点进队 while(q.size()) {auto tmp = q.front();//取队首元素 q.pop();if(tmp.second == n) { //边界条件 到达n号格子 cout << tmp.first;//输出次数 return;}if(vis[tmp.second]) continue;//已被访问 vis[tmp.second] = true;for(int i = 1; i< n; i++) {//枚举到达终点 在当前格子每次可以走的步数 if(a[tmp.second]%i) continue; //当前步数 不是此格子因子 不能走 if(i + tmp.second <= n && !vis[tmp.second + i]) { //在当前格子可以 向右走的步数q.push({tmp.first+1,i + tmp.second});}if(tmp.second - i >= 1 && !vis[tmp.second - i]) {//同理 向左走 q.push({tmp.first+1,tmp.second-i});}}}
}void solve() {int n;cin >> n;vector<int> a(n+1,0);for(int i = 1; i <= n; i++) {cin >> a[i];}bfs(n,a);
}signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);solve();return 0;
}

5. 清楚姐姐的布告规划

题目描述 :
在长度为n的墙上贴布告板, 有n个布告板 要求
● 第 𝑖 张布告必须要覆盖掉布告板的第 i 个位置;
● 布告不能够相互重叠,但是可以紧贴。
问至少多少张才能贴满墙

分析 :
一道典型的DP问题 0-1背包 多了点限制
每块布告板可选 可不选 选的前提是满足第i块能把墙的第i个位置覆盖 且布告板不能重叠 所以每次选第i块布告板满足第i块布告板的左端点小于等于i,且第i块的右端点大于等于i. f[i][j] = k~前i块布告板中 能覆盖面积为j (j>=i)的最少块数为k 优化为一维 每次能选第i块的条件是 j >= i and j - a[i] + 1 <= i
i满足的左右边界

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>pii;
const int N = 5e3+ 10;void solve() {int n;cin >> n;vector<int> a(n+1,0);for(int i = 1; i<= n; i++) {cin >> a[i];}vector<int>dp(n+1,1e9);dp[0] = 0;for(int i = 1; i <= n; i++) { //枚举第几块布告板for(int j = n; j >= a[i]; j--) { //枚举墙的总面积if(j >= i && j-a[i] + 1 <= i) //要求第i块布告要盖住第i块位置dp[j] = min(dp[j], dp[j-a[i]] + 1);}}if(dp[n] > n) dp[n] = -1;cout << dp[n] << endl;
}signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while(t--)solve();return 0;
}

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

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

相关文章

C语言之递归函数

文章目录 &#x1f34a;自我介绍&#x1f34a;递归函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家好&#xff0c;我是小珑也要变强&#xff08;也是小珑&…

C#学习笔记12:SYN6288语音模块_Winform上位机控制软件

今日尝试使用C# Winform写一个上位机软件控制 SYN6288语音模块 这里不讲什么基本原理(或者讲的比较略简)&#xff0c;直接讲实现了就...... 文章提供测试代码讲解、测试效果图、整体测试工程下载 目录 控件的摆放&#xff1a; SYN6288介绍: 代码编程&#xff1a; 对16进制发送…

VUE.js

目录 一、什么是VUE.js 二、VUE.js优点 三、VUE安装 四、第一个VUE程序 五、Vue指令 v-text v-html v-on v-model v-show v-if v-bind v-for 六、VUE实例生命周期 七、Vue-CLI搭建项目 主要的功能 需要的环境 八、组件路由 搭建步骤: 1. 创建 router 目录 …

ctfhub 命令注入

知识点 1.常见的拼接符 1、A ; B 先执行A&#xff0c;再执行B 2、A & B 简单的拼接 3、A | B 显示B的执行结果 4、A&&B A执行成功之后才会执行B 5、A || B A执行失败之后才会执行B , 在特殊情况下可代替空格 2.常见的命令 &#…

CentOS7 VMware虚拟机基于NAT配置网络IP

目录 前言 VMnet8 虚拟网络编辑 ens33 ping 防火墙 前言 平时学习时一直需要用到Linux服务器&#xff0c;一般都是在Windows上安装VMware来创建一个虚拟机。创建的虚拟机需要配置网络才能够访问外网&#xff0c;可以通过以下两种方式来配置虚拟机网络 桥接模式NAT模式&…

「测试线排查的一些经验-上篇」 后端工程师

文章目录 端口占用脚本失灵线上部署项目结构模版配置文件生效 一般产品研发过程所使用的环境可分为&#xff1a; 研发环境-dev测试环境-test生产环境-prod 软件开发中&#xff0c;完整测试环境包括&#xff1a;UT、IT、ST、UAT UT Unit Test 单元测试 IT System Integration …

MoE-LLaVA: Mixture of Experts for Large Vision-Language Models

发表时间&#xff1a;6 Jul 2024 论文链接&#xff1a;https://arxiv.org/pdf/2401.15947 作者单位&#xff1a;Peking University Motivation&#xff1a;最近的进展表明&#xff0c;扩展大型视觉语言模型 (LVLM) 有效地提高了下游任务的性能。然而&#xff0c;现有的缩放方…

深度学习笔记(神经网络+VGG+ResNet)

深度学习 主要参考博客常用英语单词 概念应用神经网络基础神经网络基本结构 超参数超参数是什么常用超参数超参数搜索过程常用超参数调优办法&#xff08;通过问题复杂度和计算资源选择&#xff09; 激活函数介绍为什么要使用激活函数推荐博客 sigmoid激活函数&#xff08;使用…

第R1周:RNN-心脏病预测

本文为&#x1f517;365天深度学习训练营 中的学习记录博客 原作者&#xff1a;K同学啊 要求&#xff1a; 1.本地读取并加载数据。 2.了解循环神经网络&#xff08;RNN&#xff09;的构建过程 3.测试集accuracy到达87% 拔高&#xff1a; 1.测试集accuracy到达89% 我的环境&a…

[windows10]win10永久禁用系统自动更新操作方法

WinR打开运行 输入regedit打开注册表 点击确定打开注册表 按照如下路径找到UX 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 在空白处点击鼠标右键&#xff0c;新建选择DWORD&#xff0c;然后重命名为FlightSettingsMaxPauseDays 双击FlightSet…

Vue项目学习(项目的开发流程)(2)

1、vue项目的默认首页和入口文件 2、两种书写的方式是表达一样的意思——>el&#xff1a;指定当前Vue实例挂载到哪个区域里 3、如果属性值和属性名一致&#xff0c;冒号和后面可以省略不写 &#xff08;所以有两种写法&#xff09; 4、以".vue"文件结尾的文件在项…

Linux操作系统之进程信号

进程信号 一、信号1、概念2、系统定义的信号列表3、常见的信号处理方式 二、产生信号的方式1、终端按键&#xff08;1&#xff09;组合键&#xff08;2&#xff09;示例代码&#xff08;3&#xff09;运行结果 2、调用系统函数&#xff08;1&#xff09;kill命令&#xff08;2&…

CRC16循环冗余校验

代码&#xff1a; #include<stdio.h> #include <stdint.h>#define uchar unsigned char #define uint unsigned int static const uint8_t auchCRCHi[] { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x0…

深入理解接口测试:实用指南与最佳实践(三)API文档解析及编写测试用例

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 这一阶段是接口测试的学习&#xff0c;我们接下来的讲解都是使用Postman这款工具&#xff0c;当然呢Postman是现在一款非常流行的接口调试工具&#xff0c;它使用简单&#xff0c;而且功能也很强大。不仅测试人员会使用…

pxe自动安装linux

实验环境 1.rhel7主机 2开启主机图形&#xff08;本人最小化安装&#xff0c;先下载&#xff09; 3配置网络 4关闭VMware dhcp功能 5能够自动安装系统 完成rhedhat7图形,kickstart,启动图形化制作工具 安装kickstart 启动图形化制作工具 在ks.cfg可以添加安装时下载的包 …

算法学习day29

一、乘法表中第k小的数(和有序矩阵中第k小的数类似) 题意&#xff1a; 乘法表是大小为 m x n 的一个整数矩阵&#xff0c;其中 mat[i][j] i * j&#xff08;下标从 1 开始&#xff09;。 给你三个整数 m、n 和 k&#xff0c;请你在大小为 m x n 的乘法表中&#xff0c;找出…

可视化图表与源代码显示的动态调整

可视化图表与源代码显示的动态调整 页面效果描述&#xff1a;本篇代码实现了通过拖动一个可调整大小的分隔符&#xff0c;用户可以动态地调整图表显示区域和源代码显示区域的大小。通过监听鼠标事件&#xff0c;当用户拖动分隔符时&#xff0c;会动态计算并更新两个区域的大小 …

Vue项目学习(1)

1、进入cmd命令行——> vue ui ——>等等操作 2、 3、src目录下 4、vue项目的启动 &#xff08;1&#xff09; &#xff08;2&#xff09; 5、如何更改前端vue项目的端口号&#xff1f;——>去vue.config.js里配置应一个对象

mprpc框架的应用示例

一、注册 有一个本地服务&#xff0c;我想把它发布成远程服务&#xff0c;首先在user.proto中定义rpc方法的描述&#xff0c;定义参数和响应的消息类型 然后在userservice.cc文件中通过继承UserServiceRpc这个类&#xff0c;重写一下响应的方法&#xff08;打四个动作&#xf…

shell函数的基本知识

文章目录 shell函数定义函数调用函数函数参数返回值 Shell 输入/输出重定向输入重定向输出重定向 Shell 函数是 Shell 脚本编程中的一个非常有用的特性&#xff0c;它允许你将一段代码封装起来&#xff0c;给它一个名字&#xff08;函数名&#xff09;&#xff0c;然后在脚本的…