当前位置: 首页 > article >正文

P1909 [NOIP2016 普及组] 买铅笔 题解

思路

容易想到答案就是买三种铅笔各自所需要的钱的最小值,而各自的费用就是所需铅笔数除以每盒的铅笔数向上取整得到所需要买的铅笔盒盒数再乘以价钱。

若设买 n n n 支铅笔,每盒 a a a b b b 元,则代码实现为 ceil(n/a)*b

在写题目的过程中可以使用 for 循环来进行数据的读入,这样可以节省空间。

代码

#include<bits/stdc++.h>
using namespace std;
int n,a,b,ans=INT_MAX;

int main()
{
    
    scanf("%d",&n);
    for(int i=1;i<=3;i++)
    {
        scanf("%d%d",&a,&b);
        ans=min(int(ceil(n*1.0/a)*b),ans);
    }
    printf("%d\n",ans);
    return 0;
}

后记

注意到大多数题解是求出三个费用然后输出 min(a,min(b,c)),这种写法需要写两个 min,较为繁琐,所以其实可以使用另一种等效写法 min({a,b,c})

具体实现方法如下:

#include<bits/stdc++.h>
using namespace std;
int n;
int a1,a2,a3;
int b1,b2,b3;
int ans1,ans2,ans3;

int main()
{
    
    scanf("%d",&n);
    scanf("%d%d",&a1,&b1);
    scanf("%d%d",&a2,&b2);
    scanf("%d%d",&a3,&b3);
    ans1=ceil(n*1.0/a1)*b1;
    ans2=ceil(n*1.0/a2)*b2;
    ans3=ceil(n*1.0/a3)*b3;
    printf("%d\n",min({ans1,ans2,ans3}));
    return 0;
}

http://www.kler.cn/a/473014.html

相关文章:

  • KCP解读:C#库类图
  • Java语法总结
  • Android NDK开发实战之环境搭建篇(so库,Gemini ai)
  • 嵌入式ARM平台 openwrt系统下 基于FFmpeg 的视频采集及推流 实践
  • 【pyqt】(四)Designer布局
  • 搭建企业AI助理的创新应用与案例分析
  • python初体验: 处理excel数据
  • redis的学习(四)
  • UART串口数据分析
  • 一个海外产品经理的 AI 日常
  • Linux下常用命令
  • Lua协同程序(线程)
  • 【Linux】进程铺垫——冯诺依曼体系与操作系统概念
  • 代码随想录-训练营-day1
  • SQL 数据类型
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • 哈密顿原理
  • 基于华为ENSP的OSPF数据报文保姆级别详解(3)
  • Python requests库过指纹检测
  • 《HeadFirst设计模式》笔记(上)
  • 深入理解 Java 接口的回调机制
  • 认识+安装ElasticSearch
  • MySQL的三大日志
  • 【机器视觉】OpenCV 滤波器(卷积、方盒/均值滤波、高斯滤波、中值/双边滤波、sobel/scharr/拉普拉斯算子、边缘检测Canny)
  • 深入解读MVCC中的三大日志:Undo Log、Redo Log和B-Log
  • Julia语言的数据结构