LuoGu P1909 买铅笔???
题目描述
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。
商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋 友们发礼物。
现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔*最少*需要花费多少钱。
输入格式:
输入的第一行包含一个正整数n,表示需要的铅笔数量。
接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种 包装内铅笔的数量,第二个整数表示这种包装的价格。
保证所有的7个数都是不超过10000的正整数。
输出格式:
输出一行一个整数,表示P老师最少需要花费的钱。
链接 https://www.luogu.org/problemnew/show/1909
说实话吧,这个题确实不太想写(大水题儿??居然还因为0x3fWA了一次。。。真是智障了@_@),可是机房的小伙伴居然有不会的。。。只能勉为其难了==
这个题确实没太有什么难点,就是学了几个周的小伙伴都能有思路,一共有三种包装,每一种包装里都会包含一定数量的铅笔,并有一定的价格,我们用n整除一下x,就会的到最少需要买这种包装的数量,然后将n/x在乘上y(包装的价格),就会得出只买这种包装最少需要的钱,一共三次,取这三次的最小值即可。
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n,m,ans=0x3fffffff,x,y;
scanf("%d",&n);
for(int i=;i<=;i++){
scanf("%d%d",&x,&y);//x表示每个包装内铅笔的数量,y表示每个包装的价格;
m=n/x;
ans=min(ans,m*y);
}
printf("%d\n",ans);
return ;
}
点击查看代码
但是,我们漏了一个很重要的地方,也就是说,上面的代码是错误的解法(想一下为什么)。
答案是:我们将 n/x (整除)将会的到下取整的答案,举个例子吧,当一共需要买 25(n) 只铅笔时,这种包装每个单位中有包含 17(x) 支铅笔,所以n/x会得到 1 而不是我们想要的 2 。但是如果是 n=25、x=5时,我们恰好能得到我们想要的答案(n/x) 5 ,也就是说当n能够整除x时 if(n%x==0),我们恰好能得到想要的答案,但 if(n%x!=0),我们会得到比想要的答案小 1 的结果,我们便需要将得到的 n/x ++。所以加上第二个if语句特判一下就可以完美的解决这个问题了!
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n,m,ans=0x3fffffff,x,y;
scanf("%d",&n);
for(int i=;i<=;i++){
scanf("%d%d",&x,&y);//x表示每个包装内铅笔的数量,y表示每个包装的价格;
m=n/x;
if(n%x) m++;
ans=min(ans,m*y);
}
printf("%d\n",ans);
return ;
}
这才是正确代码==
LuoGu P1909 买铅笔???的更多相关文章
- 洛谷P1909 买铅笔
题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 333 种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的 ...
- #P1909 买铅笔 的题解
题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔 ...
- P1909 买铅笔
题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔 ...
- Java实现 洛谷 P1909 买铅笔
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(Strin ...
- 买铅笔(NOIP2016)
先给题目链接:买铅笔 这题非常水,没啥可分析的,先给代码: #include<bits/stdc++.h> //1 using namespace std; int main(){ int ...
- NOIP【2016普及组】 考后有感(买铅笔,回文日期,海港,魔法阵)
普及组考试已落下大幕,但我们那扑通扑通等待成绩的心仍然无法平静,先来给四道题做一个总结: 一. 买铅笔 自评难度:1星 其实这道题没有什么难度,生命之题,满分必拿,100分,保底啦~\(≧▽≦)/~ ...
- P1909 [NOIP2016 普及组] 买铅笔
如果她选择购买第一种包装,那么她需要购买29份,共计2×29=58支,需要花费的钱为2×29=58. 实际上,P老师会选择购买第三种包装,这样需要买22份.虽然最后买到的铅笔数 量更多了,为30×2= ...
- NOIP普及组:买铅笔
参加考试的时候,第一题我足足花了四十多分钟(因为那奇葩的键盘,幸好我向老师报告更换了键盘),还是只得了五十分... 题目描述: P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共 ...
- luogu P1194 买礼物
题目描述 又到了一年一度的明明生日了,明明想要买B样东西,巧的是,这B样东西价格都是A元. 但是,商店老板说最近有促销活动,也就是: 如果你买了第I样东西,再买第J样,那么就可以只花K[I,J]元,更 ...
随机推荐
- 总结关于Ubuntu 安装 Docker 配置相关问题及解决方法
总结关于Ubuntu 安装 Docker 配置相关问题及解决方法 Tomcat 示例 软件镜像(xx安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的xx): 步骤: 1.搜索镜像 ...
- 基于Prometheus和Grafana打造业务监控看板
前言 业务监控对许许多多的场景都是十分有意义,业务监控看板可以让我们比较直观的看到当前业务的实时情况,然后运营人员可以根据这些情况及时对业务进行调整操作,避免业务出现大问题. 老黄曾经遇到过一次比较尴 ...
- jq js 获取子元素
js this.children[1].className=""this.firstChild.className = ""this.lastChild.cla ...
- 记录一次idae和maven设置的巨坑
这个忽略pom.xml文件千万别勾选,不然会导致项目的pom.xml怎么填写都无法导入新的依赖包!
- Asp.net Core 3.1 引用ORM工具包 yrjw.ORM.Chimp(EF + dapper + Autofac)使用教程
yrjw.ORM.Chimp 介绍 It is not the encapsulation of ORM,a based on EF + dapper + Autofac, is repository ...
- 3 Spark 集群安装
第3章 Spark集群安装 3.1 Spark安装地址 1.官网地址 http://spark.apache.org/ 2.文档查看地址 https://spark.apache.org/docs/2 ...
- linux 解压与压缩
转http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:tar cv ...
- 用python实现实时监控网卡流量
很多时候,我们是需要查看服务器的网卡当前跑了多大流量,但对于网卡流量的查询,在linux下似乎没有像top那样的原生命令.虽然top功能很强大,可以实时查看cpu.内存.进程的动态,但是却没有对网卡流 ...
- Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资 ...
- 漏洞重温之sql注入(五)
漏洞重温之sql注入(五) sqli-labs通关之旅 填坑来了! Less-17 首先,17关,我们先查看一下页面,发现网页正中间是一个登录框. 显然,该关卡的注入应该为post型. 直接查看源码. ...