蓝桥杯第二十场小白入门赛

2.黛玉泡茶

我的思路代码:(但我不知道哪有错误)

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main(){int n,m,k,res=1;cin>>n>>m>>k;vector<int>num(n+1,0);for(int i=1;i<=n;i++) cin>>num[i];sort(num.begin()+1,num.end());int sum=m;for(int i=1;i<=k;i++){sum-=num[i];if(sum<0){sum+=m;res++;}}cout<<res<<endl;return 0;
}

正确的思路代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main(){int n,m,k,res=0;cin>>n>>m>>k;vector<int>num(n+1,0);for(int i=1;i<=n;i++) cin>>num[i];sort(num.begin(),num.end());for(int i=1;i<=k;i++) res+=num[i];if(res%m==0)cout<<res/m<<endl;else cout<<res/m+1<<endl;return 0;
}

反思:我知道了。查看了测试用例后,我才明白,可能茶壶容量远小于一杯茶的容量,也就是说,你要倒满一杯茶,需要接好几次水壶,而我的代码中循环一次res最多也加一。后果就是,对于这类测试用例,我的循环结束了,我的sum还远远小于0,还没加成正值。

3.宝玉请安

我的错误思路代码:

#include <iostream>
#include<cmath>
using namespace std;
int main()
{int t,x1,x2,x3;int res=0;//需走的步数cin>>t;while(t--){cin>>x1>>x2>>x3;if((x2<x1&&x3<x1)||(x2>x1&&x3>x1)){if(x2>x3) res=abs(x2-x1);else res=abs(x3-x1);}else if((x2<x1&&x3>x1)||(x2>x1&&x3<x1)){if(abs(x1-x3)<abs(x1-x2)){res=abs(x1-x3)+abs(x2-x3);}else res=abs(x1-x2)+abs(x3-x2);}cout<<res<<endl;}// 请在此输入您的代码return 0;
}

正确思路代码:

#include <iostream>
#include<cmath>
using namespace std;
int main()
{int t,x1,x2,x3;int res=0;//需走的步数cin>>t;while(t--){cin>>x1>>x2>>x3;res=min(abs(x1-x2),abs(x1-x3))+abs(x2-x3);cout<<res<<endl;}// 请在此输入您的代码return 0;
}

反思:思考了好长时间,不知道自己为什么错,就是觉得自己的思路很正确,难受死了。最后看了看别人的和我相似的思路,才发现原来自己思路有漏洞,我把可能情况分两部分,一是两个目标地点在同一侧,二是不在同一侧。在同一侧的步数统计有问题,我直接判断两点谁更大,实际上应该判断两点谁离x1更远。

还学到了别人的直触本质的思路。本质上是x1到x2或x3其中一个,让后再在x2,x3之间行走。

4.贾母祝寿

我的思路代码:

#include <iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{int n,q;long long res=0;cin>>n>>q;vector<long long>stone(n,0);while(q--){int t,x,y;cin>>t>>x>>y;if(t==1){for(int i=0;i<x;i++){stone[i]+=y;}}else {for(int i=n-1;i>=n-x;i--){stone[i]-=y;}}}for(int i=0;i<n;i++){stone[i]=abs(stone[i]);res=max(res,stone[i]);}cout<<res<<endl;// 请在此输入您的代码return 0;
}

正确思路代码:

#include <iostream>
#include<cmath>
#include<vector>
using namespace std;
int main()
{int n,q;long long res=0;cin>>n>>q;long long num1=0,num2=0;while(q--){int t,x,y;cin>>t>>x>>y;if(t==1){num1+=y;if(x==n)num2+=y;}else {num2-=y;if(x==n) num1-=y;}}res=max(abs(num1),abs(num2));cout<<res<<endl;// 请在此输入您的代码return 0;
}

反思:我的思路时间复杂度太高,O(n*m),n的数据范围是10^5,m的数据范围是10^9。

 5.清洁客房

我根本没想到用dp数组,我想用排列组合做一下,没做出来。

#include <iostream>
#include<vector>
using namespace std;
int N = 1e5+1;
int mod = 1e9 + 7;
int main()
{vector<vector<long>> dp(N, vector<long>(4,0));//前i个房间选择j种的方案类型for(int i=1;i<N;i++)dp[i][1]=9;for (int i = 2; i <N; i++) {for (int j = 2; j <= 3; j++) {dp[i][j] = (dp[i - 1][j - 1] * (10 - (j - 1))%mod  + dp[i - 1][j] * j%mod ) % mod;}}int t, n;cin >> t;while (t--) {cin >> n;cout << dp[n][3] << endl;}// 请在此输入您的代码return 0;
}

dp数组含义:dp[i][j]前i个房间选择j种等级的方案数 (i,j均从0开始)

6.宝玉与黛玉的考验

正确代码

#include<iostream>
#include<string>
using namespace std;int n, m, k;
string a, b;
long get(long a, long b) {return k * a + k * b - 2 * a * b;
}int main() {cin >> n >> m >> k >> a >> b;int mxa = 0, mxb = 0, mna = k, mnb = k, sum = 0;//滑动窗口,找出4个值、for (int i = 0; i < n; i++) {sum += a[i] - '0';if (i >= k) {sum -= a[i - k] - '0';mxa = max(sum, mxa);mna = min(sum, mna);}}sum = 0;for (int i = 0; i < m; i++) {sum += b[i] - '0';if (i >= k) {sum -= b[i - k] - '0';mxb = max(sum, mxb);mnb = min(sum, mnb);}}cout << max(max(get(mxa, mxb), get(mxa, mnb)), max(get(mna, mxb), get(mna, mnb))) << endl;return 0;
}

思路:这题看来是和数学思维相关。开始我想了遍历整个二维数组,但是很明显超时。

用数学思维来分析:设k*k区间中分别有a行,b列被选中,即长度为n的字符串中有a个1,长度为m的字符串中有b个1。那么这个区间的价值为ka-ab+kb-ab=-2(a-k/2)(b-k/2)+k^2/2。(k是常量,a,b是变量)a,b单独变化,这个表达式 的最值在a,b取到端点的时候取到最值。那么就求a,b的最大小值。求的过程用到滑动窗口。

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

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

相关文章

2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也

这里给大家提供了4种镜像下载地址&#xff0c;包括CentOS官方镜像下载、阿里云开源镜像站下载、网易开源镜像下载搜狐开源镜像下载。 1.CentOS官网镜像下载 因为服务器在国外所以打开CentOS官方网站的时候可能会比较慢。大家可以选择后面几种国内镜像下载方式。 1.1进入CentO…

《决策思维:人人必备的决策口袋书》

本书干货很多&#xff0c;十分值得一读。但受众不是一线员工与一线管理者&#xff0c;更多的倾向于管理者的管理者。一线员工读完的最大收获是可以理解老板的决策逻辑与思维方式&#xff0c;便于更好的去做执行。同时&#xff0c;还能帮助判断老板的决策是否正确&#xff0c;是…

esp32学习:语音识别教程esp-skainet库的使用

乐鑫推出了基于esp_sr算法的语音识别应用esp-skainet。官方介绍&#xff1a;ESP-Skainet 以最便捷的方式支持基于乐鑫的 ESP32系列 芯片的唤醒词识别和命令词识别应用程序的开发。使用 ESP-Skainet&#xff0c;您可以轻松构建唤醒词识别和命令词识别应用程序。 支持的主要功能…

C#通过异或(^)运算符制作二进制加密(C#实现加密)

快速了解异或运算符&#xff1a; 异或运算符在C#中用 “^” 来表示 口诀&#xff1a;相同取0&#xff0c;相异取1 简单加密解密winform示例&#xff1a; /// <summary>/// 异或运算符加密实现/// </summary>/// <param name"p_int_Num">初始值<…

网络原理之 TCP解释超详细!!!

TCP 有连接的 可靠传输 面向字节流 全双工 其中最核心的是可靠传输 那么 TCP 如何使用可靠传输的 ??? 我们尽可能传过去, 如果传不过去,发送方至少知道自己没传过去, 所以在于接收方, 收到或者没有收到, 都会有应答的操作 1. 确认应答 实现可靠性最核心的机制!!! 引出 …

【2024最新】渗透测试工具大全(超详细),收藏这一篇就够了!

所有工具仅能在取得足够合法授权的企业安全建设中使用&#xff0c;在使用所有工具过程中&#xff0c;您应确保自己所有行为符合当地的法律法规。如您在使用所有工具的过程中存在任何非法行为&#xff0c;您将自行承担所有后果&#xff0c;所有工具所有开发者和所有贡献者不承担…

eks节点的网络策略配置机制解析

参考链接 vpc-cni网络策略最佳实践&#xff0c;https://aws.github.io/aws-eks-best-practices/security/docs/network/#additional-resourcesvpc cni网络策略faq&#xff0c;https://github.com/aws/amazon-vpc-cni-k8s/blob/0703d03dec8afb8f83a7ff0c9d5eb5cc3363026e/docs/…

IP数据报的 分片与组装技术 深度解析

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;计算机网络高效通关之路 欢迎大家点赞收藏评论&#x1f60a; 目录 IP 分片和组装分片与组装的过程分片组装 分片与组装过程的示意图分片组装过程 IP 分片和组装 16 位标识(id): 唯一的标识主机发…

Redis 事务 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 事务 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 事务 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis & 事务…

自旋锁原理及基于原子引用手写自旋锁

什么是自旋锁 自旋锁&#xff08;Spinlock&#xff09;是一种用于多线程同步的机制&#xff0c;在尝试获取锁时&#xff0c;如果锁已经被其他线程持有&#xff0c;则当前线程不会立即被阻塞&#xff0c;而是会进入一个循环中反复尝试获取锁&#xff0c;直到成功为止。这种机制通…

探索CRM功能:六个解决方案助力企业发展

在当前竞争激烈的市场环境中&#xff0c;企业面临着客户关系管理的诸多挑战&#xff0c;CRM&#xff08;客户关系管理&#xff09;系统能够有效解决客户数据孤岛、提升客户互动效率、增强销售预测准确性等问题。通过整合客户信息和优化业务流程&#xff0c;CRM帮助企业实现更高…

解决JeecgBoot微服务通过Gateway访问Swagger资源出现“Knife4j文档请求异常”

1.问题描述 基于jeecgboot单体版本,参照官方推荐的纯微服务项目拆分指南,对jeecgboot项目进行微服务拆分,将gateway和system模块启动成功后,通过gateway访问访问Swagger接口文档,出现“Knife4j文档请求异常”,如下图: 2.问题定位: 1.浏览器F12打开控制台,查看异常请…

Kafka-Eagle(可视化监控平台)安装教程

Kafka Eagle 1. Install Mysql Kafka-Eagle 的安装依赖于 MySQL&#xff0c;MySQL 主要用来存储可视化展示的数据。 2.Kafka 环境准备 调整Kafka内存占用等参数&#xff0c;暴露JMX JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和…

在GeoTools中的Shapefile属性表读取效率之Shp与Dbf对比

目录 前言 一、POI测试数据简介 1、选用的POI数据 2、关于数据的属性数据 二、属性数据读取的两种方式实现 1、基于DbaseFileReader的读取 2、基于SimpleFeatureSource的读取 三、实际运行对比 1、内存和CPU占用情况 2、运行耗时情况 四、总结 前言 众所周知&#x…

《向量数据库指南》——text-embedding-3-large与Mlivus Cloud打造语义搜索新纪元

使用text-embedding-3-large生成向量并将向量插入Mlivus Cloud实现高效语义搜索的深度解析与实战操作 在数字化时代,数据的处理和存储方式正在经历前所未有的变革。特别是随着大数据和人工智能技术的快速发展,向量数据库作为一种新型的数据存储和查询方式,正逐渐受到越来越…

系统架构设计师教程 第2章 2.6 计算机语言 笔记

2.6计算机语言 ★★★★☆ 2.6.1计算机语言的组成 计算机语言 (Computer Language) 是指用于人与计算机之间交流的一种语言&#xff0c;是人与计算机之间传递信息的媒介。 计算机语言主要由一套指令组成&#xff0c;指令一般包括表达式、流程控制和集合三大部分内容。 表达…

Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容

介绍 在当今数据驱动的世界中&#xff0c;抓取动态网页内容变得越来越重要&#xff0c;尤其是像抖音这样的社交平台&#xff0c;动态加载的评论等内容需要通过特定的方式来获取。传统的静态爬虫方法难以处理这些由JavaScript生成的动态内容&#xff0c;Selenium爬虫技术则是一…

测试造数,excel转insert语句

目录 excel转sql的insert语句一、背景二、直接上代码 excel转sql的insert语句 一、背景 在实际测试工作中&#xff0c;需要频繁地进行测试造数并插入数据库验证&#xff0c;常规的手写sql语句过于浪费时间&#xff0c;为此简单写个脚本&#xff0c;通过excel来造数&#xff0…

Flink CDC系列之:调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案

Flink CDC系列之&#xff1a;调研应用Flink CDC将 ELT 从 MySQL 流式传输到 StarRocks方案 准备准备 Flink Standalone 集群准备 docker compose为 MySQL 准备记录使用 Flink CDC CLI 提交作业 同步架构和数据更改路由变更清理 本教程将展示如何使用 Flink CDC 快速构建从 MySQ…

Rust 力扣 - 1. 两数相加

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用一个全局的备忘录&#xff0c;然后我们遍历数组&#xff0c;如果当前元素在备忘录里面找到了&#xff0c;就返回备忘录里面记录的下标和当前下标记录&#xff0c;没找到就把当前元素匹配的元素和当前元素…