火车上有N个人,每个人手机有不同的电量,假设有一个人的充电宝能充任何人的手机M%的电(每个手机充电的百分之电量不同好吗,这里给降低了难度,不然应该额可以考类似背包问题)。请问最多可以给多少人的手机充满。

        这题不仅水还傻逼,给电量多的人充电电量低的人都快关机了好吗。话说回来,充满的话肯定先充电量多的,这里排个序就好,然后就是模拟充电咯。统计有多少个人的手机能有100(注意,一个人的手机是100满电也算,这里可以从测试案例看出来,不然又要骂出题人傻逼了。)


题目:飞机票直达(B - Super Mobile Charger


代码:

Memory: 228 KB
Time: 0 MS
Language: GNU C++
Result: Accepted
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
bool cmp(int x, int y)
{
    return x>y;
}
int main()
{
    const int maxn=100+10;
    int cas, N, M, power[maxn], i, ans, t;
    scanf("%d", &cas);
    for(int k=1;k<=cas;k++)
    {
        scanf("%d%d", &N,&M);
        for(i=0;i<N;i++)scanf("%d", &power[i]);
        sort(power, power+N, cmp);
        ans=0;
        for(i=0;i<N;i++)
        {
            t=100-power[i];
            if(power[i]!=100 && M>=t)
            {
                power[i]+=t;
                M-=t;
            }
            if(power[i]==100)ans++;
        }
        printf("%d\n", ans);
    }
    return 0;
}