一个有意思的小问题,不知道有没有人碰到过? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lirijie1
V2EX    程序员

一个有意思的小问题,不知道有没有人碰到过?

  •  
  •   lirijie1 2015-10-03 12:47:34 +08:00 4781 次点击
    这是一个创建于 3670 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个英雄打怪,途中有 n 个怪,怪物有两个属性攻击力 a[n]和价格 b[n],英雄初始的攻击力为 0 但是金钱无限,如果英雄的攻击力小于怪物就得以怪物的价格收买作为自己军团的一员,反之则可以直接杀死怪物,收买的怪物战斗力可以叠加,问,通关最少用多少钱?
    16 条回复    2015-10-11 13:40:44 +08:00
    yuchting
        1
    yuchting  
       2015-10-03 15:36:42 +08:00   1
    算法盲人。。。排序 a 、 b 两个表,每次买 a 最高, b 最低的怪,打 b 最高, a 最低的怪,抛砖完毕
    shiznet
        2
    shiznet  
       2015-10-03 18:43:23 +08:00
    怪物出现的顺序是可以自定的么?
    vB4h3r2AS7wOYkY0
        3
    vB4h3r2AS7wOYkY0  
       2015-10-03 19:03:52 +08:00
    是不是我 2 了

    最少用 b[n]
    loudis
        4
    loudis  
       2015-10-03 20:07:36 +08:00
    如果可以随便选怪,找到 a[n]最大值的怪物 i ,然后根据 a[n]/b[n] 性价比排名,再取前几个累加 a 大于 a[i]即可?

    如果打怪顺序开始随机固定,就不好算了。。
    ppdg
        5
    ppdg  
       2015-10-03 20:42:12 +08:00   1
    乍一看貌似是最小费用最大流问题
    glchaos
        6
    glchaos  
       2015-10-03 21:08:14 +08:00
    金钱无限,为什么还要求最少用多少钱?
    songco
       7
    songco  
       2015-10-03 23:16:03 +08:00
    感觉和背包算法思路接近.
    ibeta
        8
    ibeta  
       2015-10-03 23:33:02 +08:00   1
    应该可以利用线性规划求解吧,可惜大学学的都还给老师了。
    写了一个递归版的 demo ,在可杀可不杀时调用递归,计算所有可能的花费,不过太多就栈溢出了□
    http://jsfiddle.net/ibeta/8dc1o0p1/
    Axurez
        9
    Axurez  
       2015-10-04 00:41:39 +08:00
    途中有 n 个怪,怎么感觉怪的顺序是确定的。。。
    a154312237
        10
    a154312237  
       2015-10-04 00:55:15 +08:00   1
    题目的意思没弄清
    1.怪物顺序已经确定 自己攻击力大于怪物的时候可以选择打死或是收买
    2.攻击力大于怪物的时候必须打死 怪物顺序自己安排
    是哪一个啊
    lzdhlsc
        11
    lzdhlsc  
       2015-10-04 05:45:24 +08:00   1
    钱 d[i]
    战斗力 s[i]
    for i in xrange(n):

    d[i] = min(d[j] if s[j] >= a[i] else d[j] + b[i])
    lzdhlsc
        12
    lzdhlsc  
       2015-10-04 05:46:06 +08:00
    @lzdhlsc 发错了 请无视
    hellov22ex
        13
    hellov22ex  
       2015-10-04 08:31:24 +08:00   1
    b2 ?

    其实我觉得这个和具体钱数有关系

    如果 b1 b2 b3 就是 1 2 3 的话,买了 2 的开始就能吊打了

    但是如果是 1 2 4 的话,还要继续买

    这玩意咋算?楼主有答案了 @我下
    lksltjw
        14
    lksltjw  
       2015-10-04 10:19:51 +08:00 via iPad
    数据规模?
    时间限制?
    空间限制?
    算法题出得这么不专业。。。
    lirijie1
        15
    lirijie1  
    OP
       2015-10-05 11:33:38 +08:00
    @ppdg 我也不晓得,这个是朋友碰到的,他说原题就是这样,没有别的条件了
    linhua
        16
    linhua  
       2015-10-11 13:40:44 +08:00
    @yuchting @lirijie1
    题目是“通关最少用多少钱?”,因此怪物出现顺序是理想的。如果怪物出现顺序确定的话。这题也就没意义了。
    1.买 a 最高, b 最低的怪,这是最理想的情况。
    2.如果 a 最高的怪, b 不是最低。那么通关最少用的钱数是不大于这个 b 的。因为直接买这个怪,肯定能通关。
    因此先按 b 对怪进行排序,从小到大。
    如果” a 最高的怪“位于第 1 或第 2 ,那毫无疑问,通关最少用的钱数就是 b[1],b[2]了。
    若“ a 最高的怪”位于第 3 ,则需对第 1 和第 2 的怪的属性进行相加,比较相加的值和“ a 最高的怪”的属性值,若相加的值 a 较大,且 b 较小,就选相加的那一组合。否则选“ a 最高的怪”。
    若“ a 最高的怪”位于第 4 ,则依次计算 b[1]+b[2],b[1]+b[3],b[2]+b[3],b[1]+b[2]+b[3],直到遇到 a 较“ a 最高的怪”大,且 b 较小为止,这时选对应的组合。或者直到遇到 b 较“ a 最高的怪”大为止,这时选“ a 最高的怪”。遍历完后还没有满足条件的,就选“ a 最高的怪”。
    。。。。。。。。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4648 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:02 PVG 12:02 LAX 21:02 JFK 00:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86