文章标题

NEUACM新生选拔(笔试)试题及答案

一段高速公路上,30分钟之内见到汽车经过的概率是0.973,那么在10分钟之内见到汽车经过的概率是多少?(某厂的面试题)

答案: 这题的关键在于0.973是见到一辆或多辆汽车的概率,而不是仅见到一辆汽车的概率。在30分钟内,见不到任何车辆的概率为0.027。因此在10分钟内见不到任何车辆的概率是这个值的立方根,而在10分钟内见到一辆车的概率则为1减去此立方根,也就是0.7。

Lbyang在玩一个回合制游戏,他所控制的角色ZS将与8个敌人进行战斗,ZS的攻击力为1,生命值无限,敌人的战斗力和生命值如下。每轮攻击,所有生命值大于0的敌人先对ZS造成伤害,敌人的攻击力不随生命值减少而降低,所有敌人攻击结束后,ZS将任意选择其中一个敌人进行攻击。求ZS所耗费的最少的生命值。
测试数据:
1
8
49 73
58 30
72 44
78 23
9 40
65 92
42 87
3 27

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<cstdio>
using namespace std;
struct node{
    double att;
    double val;
    double lev;
}enemy[11];
bool cmp(node a,node b)
{
    return a.lev>b.lev;
}
int main()
{
    int i,t,n,ans,s;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        s=0;
        for(i=0;i<n;i++)
        {
            scanf("%lf%lf",&enemy[i].att,&enemy[i].val);
            enemy[i].lev=enemy[i].att/enemy[i].val;
            s+=enemy[i].att;
        }
        sort(enemy,enemy+n,cmp);
        ans=0;
        for(i=0;i<n;i++)
        {
            while(enemy[i].val>0)
            {
                ans+=s;
                enemy[i].val--;
            }
            s-=enemy[i].att;
        }

        printf("%d\n",ans);

    }
    return 0;
 } 

答案:贪心问题, 按 攻击力/生命值 的结果从大到小排序 ,顺序是4 2 3 6 1 7 5 8
结果是 56382

请简述你所能想到的 N!% M 的最优的解法

答案:

简单点的做法 是 先判断 n,m的大小 如果n>=m结果必然是0 然后就是直接乘 边乘边取模…

你可能感兴趣的:(文章标题)