• HDU 1248 寒冰王座(完全背包问题另类解法)


    寒冰王座

    Problem Description

    不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.

    死亡骑士:“我要买道具!”

    地精商人:“我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个.”

    死亡骑士:“好的,给我一个血瓶.”

    说完他掏出那张N元的大钞递给地精商人.

    地精商人:“我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿.”

    死亡骑士:"…"

    死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.

    现在死亡骑士希望你能帮他计算一下,最少他要给地精商人多少小费.

    Input

    输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值.

    注意:地精商店只有题中描述的三种道具.

    Output

    对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.

    Sample Input

    2
    900
    250

    Sample Output

    0
    50

    先分析数据,150 200 350 的物品可以随便用,350=150+200,所以买350跟买150 和200的效果一样,剩下200 和150 能买的无非是150/200.那全部买150的剩余的钱的钱再买50的一个50+150就是200的,这算是贪心吗哈哈哈。。
    代码

    #include<iostream>
    #include<cstdio>
    int main()
    {
        int c,T,w,n;
        cin>>T;
        while(T--)
        {
    
            scanf("%d",&c);
            w=c%150;
            n=c/150;
            while(w>=50)
            {
                if(n==0)break;
                w=w-50;
                n--;
            }
            cout<<w<<endl;
        }
    }
    
    
  • 相关阅读:
    51nod 1254 最大子段和 V2
    51nod 1115 最大M子段和 V3
    51nod 1053 最大M子段和 V2
    51nod 1052 最大M子段和
    51nod 1051 最大子矩阵和
    web.config或App.config中AttachDBFilenamex相对路径问题
    [转帖]unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(主要讲区别)
    unity3d 第一人称脚本解释MouseLook
    unity3d-游戏实战突出重围,整合游戏
    unity3d-游戏实战突出重围,第四天 添加角色
  • 原文地址:https://www.cnblogs.com/lunatic-talent/p/12799035.html
Copyright © 2020-2023  润新知