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

news2024/10/27 6:59:49

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.coloradmin.cn/o/2224497.html

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

相关文章

Linux 字符设备驱动 之 无法归类的《杂项设备驱动》

学习目标&#xff1a; 了解 杂项设备驱动 和普通字符设备的异同&#xff0c;及杂项设备驱动程序的写法 学习内容&#xff1a; 一、杂项设备驱动的特别之处 杂项设备&#xff08;Miscellaneous Devices&#xff09;是一种通用的设备类型&#xff0c;用于表示那些不适合其他设备…

LeetCode 热题 100之普通数组

1.最大子数组和 思路分析&#xff1a;这个问题可以通过动态规划来解决&#xff0c;我们可以使用Kadane’s Algorithm&#xff08;卡登算法&#xff09;来找到具有最大和的连续子数组。 Kadane’s Algorithm 的核心思想是利用一个变量存储当前的累加和 currentSum&#xff0c;并…

Prometheus自定义PostgreSQL监控指标

本文我们将介绍如何在Prometheus中创建自定义PostgreSQL指标。默认情况下由postgres_export运行的查询可能不能满足用户需求&#xff0c;但我们可以创建自定义查询&#xff0c;并要求postgres_exporter公开自定义查询的结果。postgres_exporter最近被移到了Prometheus Communit…

acwing排列数字

排列数字 给定一个整数 n&#xff0c;将数字 1∼n排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 n。 输出格式 按字典序输出所有排列方案&#xff0c;每个方案占一行。 数…

lvs知识点归纳

LVS&#xff08;Linux Virtual Server&#xff09;是 Linux 内核的一种负载均衡技术&#xff0c;主要用于实现高可用性和高性能的服务器集群。以下是一些关键知识点的归纳&#xff1a; 基本概念 虚拟服务器&#xff1a;将多台物理服务器&#xff08;真实服务器&#xff09;抽象…

论文速读 - Cleaner Pretraining Corpus Curation with Neural Web Scraping

这是论文 Cleaner Pretraining Corpus Curation with Neural Web Scraping 的速读笔记&#xff0c;同时简要分析这篇论文作者的实现代码. 论文的主要工作是提出了基于神经网络的高效crawler. 这里先澄清scraper和crawler的区别&#xff0c;一图胜千言. Abstract The web conta…

openpnp - bug - 散料飞达至少定义2个物料

文章目录 openpnp - bug - 散料飞达至少定义2个物料笔记END openpnp - bug - 散料飞达至少定义2个物料 笔记 散料飞达上定义的物料个数用完了&#xff0c;现在只需要一个料就可以。 用顶部相机去找编带上是否还有一个单独的料&#xff0c;找到了。 定义散料飞达的料为1个&…

springboot使用attachment方式下载文件损坏问题解决

文章目录 场景解决方式全部代码 场景 之前使用springboot下载文件一直正常&#xff0c;今天新对接一个接口出现文件破损&#xff0c;无法下载。 之前的代码: Overridepublic ResponseEntity<ByteArrayResource> resultExcel(ExcelResultDTO excelResultDTO) {log.info(…

CentOS7系统内核升级

1. 安装新内核 采用离线方式升级 去到下面网站中下载rpm安装包 https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/下载 wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.278-1.el7.elrepo.x86_64…

探寻闲鱼libsgmain加解密算法(4) ——JNI入口跳转

关注我的人都知道我一直在学习阿里的加密和算法&#xff0c;除了研究逆向问题&#xff0c;还会把学来的阿里技术用在自己的应用上。 为什么&#xff1f;因为学习大厂的应用&#xff0c;是进步最快的方法。而大厂在安全和加密方面的技术&#xff0c;个人觉得阿里做的是最好的。 …

Maven项目管理工具-初始+环境配置

1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 理想的项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 maven能够自动下载依…

Maven 不同环境灵活构建

需求: 使用 Maven根据不同的构建环境&#xff08;如开发、测试、生产&#xff09;来定义不同的配置&#xff0c;实现灵活的构建管理。 需要Demo项目的可以参考&#xff1a;我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件&#xff0c;所以使用 spring.profile…

Android调用系统相机录像并设置参数

最近要做一个 Android上的录像功能&#xff0c;由于之前做拍照功能完全是用自定义方式&#xff0c;太麻烦。故这次决定直接调用系统相机来录像。 一、添加权限 首先&#xff0c;添加必要的权限 <!-- 授予该程序使用摄像头的权限 --><uses-permission android:name&q…

K8s中TSL证书如何续期

TSL是什么 K8s中的作用是什么&#xff1f; 在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;TSL 指的是 Transport Layer Security&#xff0c;也就是传输层安全协议。它是用来保护在网络上传输的数据的安全性和隐私性。 TSL 在 Kubernetes 中的作用包括&#xff1a;…

B+树(B树的改进)

目录 一、什么是B树&#xff1f; 二、B树的性质 1.B树被广泛作为数据库索引的索引结构 2.m个分支的结点有m个元素 3.每个元素对应子结点最大值 4.多级索引结构 5.叶子结点层包含所有元素 三、B树和B树的区别 四、B树的查找 1.顺序查找 2.随机查找 3.范围查找 一、什…

JVM机制

文章目录 JVM 简介JVM内存划分堆&#xff08;线程共享&#xff09;Java虚拟机栈&#xff08;线程私有&#xff09;本地方法栈&#xff08;线程私有&#xff09;程序计数器&#xff08;线程私有&#xff09;方法区&#xff08;线程共享&#xff09; JVM类加载机制类加载过程双亲…

校园表白墙源码修复版

此校园表白墙源码基于thinkphp&#xff0c;因为时代久远有不少bug&#xff0c;经本人修复已去除大部分bug&#xff0c;添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…

群控系统服务端开发模式-应用开发-业务架构逻辑开发准备工作

安装与仓库已经调整完毕&#xff0c;现在开发业务架构逻辑&#xff0c;其次再开发功能逻辑。业务架构逻辑开发与功能逻辑开发不是一回事&#xff0c;一定要明白。业务架构指的是做某一件事或是某一种类型的事的逻辑&#xff0c;在互联网web应用中通常指一套系统的外在逻辑&…

js 的宏任务和微任务

宏任务 (macro-task) 与微任务 (micro-task) 在 JavaScript 中&#xff0c;宏任务&#xff08;macro-task&#xff09;和微任务&#xff08;micro-task&#xff09;是任务队列&#xff08;task queue&#xff09;中两个不同的任务类型&#xff0c;它们是 JavaScript 异步编程机…

DBeaver查看已保存连接的密码

打开Dbeaver窗口菜单-首选项-工作空间&#xff0c;找到工作空间路径 在文件管理器中打开工作空间路径\General.dbeaver&#xff0c;找到credentials-config.json。 在Linux下&#xff0c;使用如下命令对credentials-config.json文件进行解密 openssl aes-128-cbc -d -K babb4…