牛客Wannafly挑战赛10 A.小H和迷宫

链接:https://www.nowcoder.com/acm/contest/72/A
来源:牛客网

题目描述

    小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%、b%、c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使怪兽失去尽可能多的血量
    注意:每瓶药水只能用一次

输入描述:

一行,四个整数 N,a,b,c

输出描述:


一行,一个整数w,表示最多能使得怪兽扣减多少血量

示例1

输入

100 20 15 0

输出

32


备注:

5≤N≤109,0≤a,b,c≤100

这里我用的全排列枚举

不然的话比如说这组数据

    105 20 25 0

105-(105*0.8+(84为105*0.8后向下取整)84*0.75) = 42

105-(105*0.75(78为105*0.75后向下取整)*0.8)=43

答案是不是不一样?

代码如下

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include <cmath>
#define INF 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
#define F(i,n) for(i=0;i<n;i++)
#define in scanf
#define out printf
using namespace std;
typedef long long LL;
int main() {
    LL n,a[3];
    LL Max = -INF;
    LL ans;
    in("%lld %lld %lld %lld",&n,&a[0],&a[1],&a[2]);
    do{
        ans = n*(100-a[0])/100;
        ans = ans*(100-a[1])/100;
        ans = ans*(100-a[2])/100;
        ans = n-ans;
        Max = Max>ans?Max:ans;
    }while(next_permutation(a,a+3));
    out("%lld",Max);
    return 0;
}
这里的next_permutation(a,a+3)是c++的全排列函数
需要添加头文件#include<algorithm>

还有一种思路,n对abc三个数取余,每次选择余数最大的那瓶药使用


posted @ 2018-02-23 21:49  秃头大师  阅读(176)  评论(0编辑  收藏  举报