第14届蓝桥杯 | 冶炼金属

news2024/11/24 1:07:47

作者:指针不指南吗
专栏:第14届蓝桥杯真题

🐾慢慢来,慢慢来🐾

文章目录

  • 题目
  • 代码摸索
    • 第一次 AC 5/10
    • 第二次 AC 100%
  • 反思

题目

链接: 4956. 冶炼金属 - AcWing题库

小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。

这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。

现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。

每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。

根据这 N 条冶炼记录,请你推测出转换率 V 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况

输入格式

第一行一个整数 N,表示冶炼记录的数目。

接下来输入 N 行,每行两个整数 A、B,含义如题目所述。

输出格式

输出两个整数,分别表示 V 可能的最小值和最大值,中间用空格分开。

数据范围

对于 30% 的评测用例,1≤N≤ 1 0 2 10^2 102
对于 60% 的评测用例,1≤N≤ 1 0 3 10^3 103
对于 100% 的评测用例,1≤N≤ 1 0 4 10^4 104 ,1≤B≤A≤ 1 0 9 10^9 109

输入样例:

3
75 3
53 2
59 2

输出样例:

20 25

样例解释

当 V=20 时,有:[ 75 20 \frac{75}{20} 2075] =3,⌊ 53 20 \frac{53}{20} 2053⌋ =2,⌊ 59 20 \frac{59}{20} 2059⌋ =2,可以看到符合所有冶炼记录。

当 V=25 时,有:[ 75 25 \frac{75}{25} 2575] =3,⌊ 53 25 \frac{53}{25} 2553⌋ =2,⌊ 59 25 \frac{59}{25} 2559⌋ =2,可以看到符合所有冶炼记录。

且再也找不到比 20 更小或者比 25 更大的符合条件的 V 值了。

代码摸索

第一次 AC 5/10

  1. 用两个数组把 n 组 A、B存起来;

  2. 在1~ 1 0 5 10^5 105 找到第一个满足条件的 V,即minV;

    1 0 5 10^5 105 ~1找到第一个满足条件的 V,即maxV;

把数据范围 N 卡在 $10^5,是因为在 1~ N之间遍历判断的,如果 1 0 9 10^9 109 样例调用famx地时候就会TLE ,更不行

每次遍历整个数据范围,O 很大,由这两点判断必须使用二分优化

#include<bits/stdc++.h>
using namespace std;

const int N=1e5,M=1e4+10;

int a[M]; //a存的是A
int b[M]; //b存的是B

int n; //q表示有几组数据

//从小数到大数来寻找
int fmin(int a[],int b[])
{
    for(int i=1;i<N;i++)  //i表示转换率V
    {
        int flag=0;  //使用flag标志

        for(int j=0;j<n;j++)  //通过 j 来遍历数组中的元素
        {
            if(a[j]/i!=b[j])  
                flag=1; //只要有一个不满足就改变 flag 为1
        }
        if(flag==0) //全部满足,即找到所需要的,直接返回i
            return i;
    }
}

//从大数往小数来寻找
int fmax(int a[],int b[])
{
   
    for(int i=N;i>=1;i--)  
    {
        int flag=0;
        for(int j=0;j<n;j++)  //数组
        {
            if(a[j]/i!=b[j])
                flag=1;
        }
        if(flag==0)
            return i;
    }
}

int main()
{
    scanf("%d",&n);
    
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]); //读入 n 组A,B
    }
    
    printf("%d %d",fmin(a,b),fmax(a,b)); //输出
    
    return 0;
}

第二次 AC 100%

二分优化

#include<bits/stdc++.h>
using namespace std;

const int N=1e9,M=1e5+10;

int a[M]; //a存的是A
int b[M]; //b存的是B

int n; //q表示有几组数据

bool check1(int k)
{
     for(int j=0;j<n;j++)  //通过 j 来遍历数组中的元素
    {
        if(a[j]/k>b[j])
            return false;
    }
    return true;
}

bool check2(int k)
{
     for(int j=0;j<n;j++)  //通过 j 来遍历数组中的元素
    {
        if(a[j]/k<b[j])
            return false;
    }
    return true;
}

int main()
{
    scanf("%d",&n);
    
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
    }
    
    int l=1,r=N;
    while(l<r)
    {
        int mid=l+r>>1;
        if(check1(mid)) r=mid;
        else l=mid+1;
    }
    
    printf("%d ",l);
    
    l=1,r=N;
    while(l<r)
    {
        int mid=l+r+1>>1;
        if(check2(mid)) l=mid;
        else r=mid-1;
    }
    
    printf("%d ",l);
    
    return 0;
}

反思

  1. 取下限,直接可以使用/做到
  2. 数组最大能开多大
#include<bits/stdc++.h>
using namespace std;
//在本人环境中
int c[20000][20000];
//全局数组能开到20000*20000

int main()
{
	int b[100][100];	        
	// 函数中二维数组最大能开100*100
	char a[4* 518028];
	// 函数中的char数组最大能开4*518028
	int b1[500000];  
	// int最大能开到518028 
	return  0;
}

那么大的数据范围,就不应该去遍历,去尝试,应该直接二分

这个题是我后来自己做出来的,我哭死TvT

当时考的时候,还是太紧张了,有点手忙脚乱的感觉,没有写出来,确实没有很难

Alt

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

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

相关文章

【LeetCode】数据结构刷题(2)[查找链表的中间节点]

【LeetCode】数据结构刷题&#xff08;2&#xff09; 1.题目来源2.题目描述3.解题思路4.代码展示5.类似题目练习 所属专栏&#xff1a;玩转数据结构题型 博主首页&#xff1a;初阳785 代码托管&#xff1a;chuyang785 感谢大家的支持&#xff0c;您的点赞和关注是对我最大的支持…

自动驾驶方案及相关对标

华为&#xff1a; 2021年4月18日&#xff0c;在华为智能汽车解决方案BU新品发布会上&#xff0c;华为智能汽车解决方案BU总裁王军表示&#xff0c;华为要持续加大对汽车行业的投入&#xff0c;今年在研发上的投资将达到10亿美元&#xff0c;未来每年保持30%左右增长&#xff0…

three.js的着色器(巨详细 初学者 大白话)

three.js就不过多介绍了 可以看另一篇文章 总结就是场景 相机 和 渲染器 学起来 也比较轻松 后来看到了着色器 给我整懵乐了 一会一个API 一会一个API 都没见过 然后就一点点去学习 真的是费了好大劲了 需要知道很多新东西 才能初步知道和使用着色器 当然如果只是简单的使…

docker-harbor私有仓库的部署与管理

目录 Harbor Harbor介绍 Harbor的特性 Harbor的构成 部署Harbor 搭建本地私有仓库 Docker容器的重启策略 部署Docker-compose服务 部署Harbor服务 关于Harbor.cfg配置文件中两类参数 启动Harbor 查看 Harbor 启动镜像 创建一个新项目 在其他客户端上传镜像 维护管…

如何创建 2023 年营销日历(内含免费模板和示例)

沟通、文案撰写、社媒营销、点击付费广告、事件营销和搜索引擎排名优化有什么共同点&#xff1f; 它们都属于营销部门的工作范畴&#xff0c;而且很可能是围绕着同一个日程表进行工作排期。 你的营销团队比你想象的要大&#xff0c;当你考虑跨职能项目和团队成员在你整体战略…

ImageJ 用户手册——第四部分(ImageJ用户界面)

ImageJ 用户手册——第四部分&#xff08;ImageJ用户界面&#xff09; ImageJ用户界面工具栏&#xff08;Toolbar&#xff09;状态栏进度条19. 工具19.1 区域选择工具19.1.1 矩形选择工具19.1.2 圆角矩形选择工具19.1.3 圆形选择工具19.1.4 椭圆选择工具19.1.5 笔刷选择工具19.…

内网渗透基础-域环境搭建

一、环境准备 1.1虚拟机安装 Mac环境&#xff1a; vmware fusion&#xff1b;parallels desktop。 windows环境&#xff1a; vmware&#xff1b;virtualbox; 有习惯用其他软件的也都一样的&#xff0c;下载安装可以找百度教程。 1.2虚拟机三种网络配置模式 桥接模式&am…

塔望3W消费战略全案丨阳澄湖牌大闸蟹:承诺就是价值,打响官方第一枪

阳澄湖牌 大闸蟹 客户&#xff1a;苏州市阳澄湖大闸蟹营销有限公司 品牌&#xff1a;阳澄湖/阳澄湖牌 服务&#xff1a;3W消费战略 品牌全案 项目背景 苏州市阳澄湖大闸蟹营销有限公司是由苏州市相城区阳澄湖大闸蟹集团公司、苏州市阳澄湖现代农业产业园特种水产养殖有限公…

Springboot整合elasticsearch

​ 前言 elasticsearch基本介绍&#xff0c;这篇文章介绍了elasticsearch安装和使用。下面根据网上查来的各种资料&#xff0c;总结如何在springboot中使用elasticsearch。 文章中用es代替elasticsearch。 依赖 springboot版本是2.0&#xff0c;es版本用的是7.6.2。不同的…

专业做护眼灯的有哪些品牌?盘点专业护眼灯品牌排行

护眼灯是家庭照明必备的工具&#xff0c;专业做护眼灯的却不多&#xff0c;许多家长找不到合适的护眼灯&#xff0c;我就根据标准GB/T 9473-2017《读写作业台灯性能要求》&#xff0c;筛选出五款合适国人使用的护眼灯。 TOP1、南卡护眼台灯Pro 光源舒适度&#xff1a;❤❤❤❤…

电子工程有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是电子工程领域的SCI期刊推荐&#xff1a; IEEE Transactions on Electron Devices&#xff1a; 该期刊是IEEE出版社的顶级期刊&#xff0c;涵盖电子学、固态电子学、电子器件、材料科学等多个领域。 IEEE Transactions on Industrial Electronics&#xff1a; 该期刊是I…

ChatGPT写21个程序,16个有漏洞:离取代程序员还远着呢!

一、ChatGPT 生成的代码有多安全&#xff1f; 近年来&#xff0c;大型语言模型推动人工智能领域取得了巨大的进步。其中&#xff0c;OpenAI 打造的 ChatGPT 甫一亮相&#xff0c;就凭借出色的性能震惊全球。ChatGPT 不仅能够处理普通文本&#xff0c;还能将自然语言翻译成代码…

Linux嵌入式uboot使用tftp网络启动加载zImage、设备树

文章目录 一、前言二、Linux U-boot 相关命令&#xff08;1&#xff09;help 命令&#xff08;2&#xff09;printenv 命令&#xff08;3&#xff09;setenv 函数&#xff08;4&#xff09;saveenv 函数 三、tftp启动linux内核步骤&#xff08;1&#xff09;进入u-boot模式&…

使用chatgpt探索SQL注入

今天尝试使用chatgpt尝试探讨咨询一下SQL注入的问题以及如何解决。 首先问的是“作为一个安全工作人员&#xff0c;写一篇关于Java SQL注入以及如何预防的文章&#xff0c;包含所有使用SQL可能存在注入的情况” 结果&#xff0c;结果就是没有等到结果&#xff0c;直接出错了。…

数百家数科公司齐聚用友BIP技术大会,共享企业数智化领先实践

4月19日&#xff5e;4月21日&#xff0c;由用友公司主办的“2023用友BIP技术大会“在用友产业园&#xff08;北京&#xff09;盛大召开&#xff0c;用友介绍了更懂企业业务的用友BIP-iuap平台&#xff0c;并发布了全面数智化能力体系&#xff0c;助力企业升级数智化底座&#x…

15、Context

目录 一、常规gorutine控制二、context控制groutine1 - 使用context控制单个gorutine2 - context创建3 - context函数4 - Context接口5 - 使用context控制多个gorutine停止 一、常规gorutine控制 控制并发的两种方式&#xff1a; 使用WaitGroup&#xff1a;多个Goroutine执行同…

SQL经典50题总结

SQL经典50题总结 SQL经典50题总结1.数据准备50题1.查询"01" 课程比 "02" 课程成绩高的学生的信息及课程分数2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩3.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩4.查询姓“…

推荐一个开源的区块链开发者工具网站

开源区块链开发者工具箱 https://ChainTool.tech 今天可以正式上线了。ChainTool 使用完全开源的方式编写一些开发者日常经常使用的工具。 关于 ChainToolDAO 大约在两个月前&#xff0c; ChainToolDAO 成立了&#xff0c;成立 ChainToolDAO 的来由是这样的&#xff1a;我是一…

Python模块练习题-测试你的Python技能。

练习题&#xff1a; 1.logging模块有几个日志级别&#xff1f;2.请配置logging模块&#xff0c;使其在屏幕和文件里同时打印以下格式的日志3.json、pickle、shelve三个区别是什么&#xff1f;4.json的作用是什么&#xff1f;5.subprocess执行命令方法有几种&#xff1f;6.为什么…

idea 2023版本创建maven管理的Scala项目教程

目录 1、创建项目1.1、创建项目名及简单配置1、2 刚开始创建好后的项目是这样的1、3 进行相关设置1&#xff09;增加maven管理2&#xff09;增加scala目录&#xff0c;并设置成resource目录 注意&#xff1a; 本项目写得教程是基于您得Java jdk、Scala jdk、maven这些都是安装配…