京东笔试买糖果算法题目解析及误区分析

输入  
输入中有 多组 测试数据。每组测试数据的第一行有两个整数n和v,1<=n<=10^5, 1<=v<=10^9,n为可 供选购糖果 数量 ,v为货车的容量。随后n行为糖果的具体信息,第一行编号为1,第二行编号为2,以此类推,最后一行编号为n。每行包含两个整数ti和pi,1<=ti<=2, 1<=pi<=10^4,ti为糖果所属的序列,1为A1、2为A2,pi则是其中的魔幻因子含量。

    • 样例输入 
      3 2 
      1 2 
      2 7 
      1 3
    • 输出 
    • 每组测试数据,先在单独的一行中输出能采购的糖果中的魔幻因子最高含量,之后在单独的行中按编号从小到大的顺序输出以空格分隔的糖果编号,若有多组糖果组合均能满足要求,输出编号最小的组。若没有糖果能够满足要求,则在第一行中输出0,第二行输出“No”。
    • 样例输出 

       7

       2

具体程序网上很多资料,这里我只分享一些题目中可能难理解的地方或者误区 (上面标红的两处)

1. n为可供选购糖果数量

我一开始以为是种类,这个差距还是挺大的,因为如果是种类的话,某种糖果可以被重复放入,这样一来,假如货车容量是5,有三种糖果,重量和对应的魔方因子为

1 2  

2  7 

1 3

那么我总可以装满,但是如果是数量的话,当货车容量大于总重量时,最大价值一定是全部可选糖果价值的总和。

2. 若有多组糖果组合均能满足要求,输出编号最小的组

这个情况比如下面这种情况:

3 2

1 2

1 5 

2 7

组合1:糖果1+糖果2 总价值=7

组合2:糖果3 总价值=7

这两种组合都满足要求,但是组合1的编号小,所以输出1 2,而不是3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值