牛客周赛 Round 54 (A~E)

news2024/11/23 18:59:51

#牛客周赛 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.coloradmin.cn/o/1983761.html

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

相关文章

落笔成画!Krita+ComfyUI解锁AI实时绘图

原文链接&#xff1a;落笔成画&#xff01;KritaComfyUI解锁AI实时绘图 (chinaz.com) 安装前提&#xff1a;电脑本地已经安装过ComfyUI且能正常运行 首先我们到Krita的官网下载Krita&#xff0c;我们直接下载最新的安装就可以了&#xff0c;安装过程非常简单&#xff0c;选择…

SQL注入之sqli-labs靶场第一关

手工注入less-1 1.找注入点 通过 ?id1 and 12--没有发现变化&#xff0c;尝试闭合发现注入点 字符型注入&#xff0c;单引号闭合 2.猜解字段数量 发现字段数量为3 3.通过union联合查询判断回显点 发现回显点2&#xff0c;3&#xff0c; 4&#xff0c;进行信息收集 数据库…

在PyCharm社区版中切换中文界面的操作方法

在PyCharm社区版中切换中文界面&#xff0c;可以按照以下步骤操作&#xff1a; 打开PyCharm社区版&#xff0c;点击顶部菜单栏的 "File"&#xff08;文件&#xff09;。在下拉菜单中选择 "Settings"&#xff08;设置&#xff09;&#xff0c;或者使用快捷…

SSM整合快速学习

目录 步骤&#xff1a; 一、环境搭建 1.创建JdbcConfig配置类 2.创建JdbcConfig配置类 3.创建MybatisConfig配置类 4.创建jdbc.properties 5.创建SpringMVC配置类 6.创建Web项目入口配置类 二、功能模块开发 步骤1:创建数据库及表 步骤2:编写模型类 步骤3:编写Dao接…

Unlikely argument type for equals(): int seems to be unrelated to Long

代码审查不规范&#xff1a; Unlikely argument type for equals(): int seems to be unrelated to Long check package code_check;public class Obj {public Obj(){}private Long mail;public Long getMail(){return mail;}public void setMail(Long mail){this.mail mail;…

【OpenCV C++20 学习笔记】提取图片中的水平和垂直对象

提取图片中的水平和垂直对象 原理实操——去除五线谱的五线二进制化提取垂直对象完善边缘和最终输出图片黑白反转平滑 完整代码 其他图片元素提取实践提取水平线条提取音符轮廓 原理 在腐蚀和膨胀操作中&#xff0c;通过卷积核(kernel)&#xff0c;或者结构元素(structuring e…

在优化微信、支付宝小程序用户体验时有哪些关键指标

在优化小程序用户体验时&#xff0c;有几个关键指标需要特别关注&#xff0c;这些指标不仅能够帮助评估当前的用户体验状况&#xff0c;还能为后续的优化工作提供明确的方向。以下是一些关键指标及其解释&#xff1a; 1. 日活跃用户&#xff08;DAU&#xff09; 是指每天使用…

搭建Mybatis,实现数据库增删改

在pom.xml文件中粘贴下列&#xff0c;加载maven依赖 <?xmlversion"1.0"encoding"UTF-8"?> <projectxmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation&…

2024年武汉东湖高新区职称第二批次开始了

众所周知&#xff0c;武汉市东湖高新区职称一年两批次&#xff0c;今年下半年第二批水平能力测试报名也已经开始了&#xff0c;请注意报名时间&#xff0c;别错过&#xff01;&#xff01; 2024年武汉东湖高新区第二批次水测报名时间&#xff1a;&#xff08;一&#xff09;网上…

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

letcode 分类练习 哈希表 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 242.有效的字母异位词349.两个数组的交集202.快乐数1.两数之和 242.有效的字母异位词 分别定义两个字母哈希表就可以了 class Solution { public:bool isAnagram(string s, strin…

sql注入-常见注入方法复现

环境演示均已sql-labs为例 1、报错注入 1.1常用的报错注入的函数 掌握好extractvalue、updatexml、floor报错&#xff0c;floor报错较难需要多理解&#xff0c;updatexml较为常用 定义 报错注入是通过特殊函数错误使用并使其输出错误结果来获取信息的。是一种页面响应形式…

MySQL练习题(五)

环境搭建&#xff08;MySQL:8.0.25&#xff09;: CREATE TABLE DEPT (DEPTNO int PRIMARY KEY,##部门编号DNAME VARCHAR(14), ##部门名称LOC VARCHAR(13) ##部门地址 ); INSERT INTO DEPT VALUES (10, ACCOUNTING, NEW YORK); INSERT INTO DEPT VALUES (20, RESEAR…

sqllab靶场练习第1~15关

1、第一关 代码解析 if(isset($_GET[id]))//判断获取的id字段是否为空 { $id$_GET[id]; //logging the connection parameters to a file for analysis. $fpfopen(result.txt,a);//打开这个文件&#xff0c;记录操作的日志 fwrite($fp,ID:.$id."\n"); fclose($fp);…

Java、PHP、Node 操作 MySQL 数据库常用方法

一、Java 操作 MySQL 数据库 1、Java 连接 MySQL 数据库 1. 使用 JDBC 驱动程序连接 使用这种方式&#xff0c;首先需要导入 MySQL 的 JDBC 驱动程序依赖&#xff0c;然后通过 Class.forName() 方法加载驱动程序类。其创建连接的过程相对直接&#xff0c;只需提供准确的数据库…

我不喜欢蔚来的原因

商业逻辑 蔚来主打的是换电和服务。 先说服务&#xff0c;这种极其依赖人工&#xff0c;打造极致尊贵感的服务&#xff0c;是完全无法随着销售规模扩大而降低成本的&#xff0c;相反&#xff0c;如果要保持相同水准的服务&#xff0c;可能会导致成本随着规模扩大而增高&#x…

桥田动态|盛夏官宣 · 桥田全新品牌形象正式发布

VISUAL IDENTITY 2024品牌革新 桥田智能品牌VI系统升级发布 Hi 各位伙伴们&#xff0c;很高兴的告知大家&#xff0c;我们的品牌形象VI和官方网站全面升级。全新的LOGO设计和官方网站将为您带来更为直观和互动的体验。 1 品牌标识 Brand identity 全新LOGO&#xff0c;彰显…

学习STM32(3)--STM32单片机中断的应用

1 引 言 本次实验旨在深入探究STM32F103单片机中断的应用。通过实验&#xff0c;我们将全面掌握STM32F103中断的定义、NVIC&#xff08;Nested Vectored Interrupt Controller&#xff0c;嵌套向量中断控制器&#xff09;的使用和开发&#xff0c;以及外部中断&#xff08;E…

SpringBoot AOP 简单的权限校验

本篇文章的主要内容是通过AOP切面编程实现简单的权限校验。 书接上回登录与注册功能 我们的用户表里面不是有role(权限)这个字段吗 在JWT令牌的生成中&#xff0c;我们加入了role字段。 那么接下来&#xff0c;我们就可以通过这个字段来实现权限校验。 我这里就很简单&#x…

pywinauto:Windows桌面应用自动化测试(七)

前言 上一篇文章地址&#xff1a; pywinauto&#xff1a;Windows桌面应用自动化测试&#xff08;六&#xff09;-CSDN博客 下一篇文章地址&#xff1a; 暂无 一、实战常用方法 1、通过Desktop快速获取窗口 通过之前章节我们了解到控制应用的方法为Application&#xff0…

实战OpenCV之环境安装与配置

OpenCV是什么 OpenCV&#xff0c;英文全称为Open Source Computer Vision Library&#xff0c;是一个开源的计算机视觉和机器学习软件库。它设计用于提供一系列功能强大的算法&#xff0c;以帮助开发者处理图像和视频数据&#xff0c;实现各种视觉任务&#xff0c;包括&#xf…