【洛谷p1926】小书童——蚂蚁大战

f(今天开学第一天)

小书童——蚂蚁大战【传送门】

洛谷算法标签:

这个题要用排序是真的很神奇;


首先我们来理解一下题意:首先蚂蚁们按血量接受打击【魔鬼操作】,血量最少的蚂蚁要走到最前面,所以我们可以用到sort(但不要忘记头文件#include<algorithm>)。所有塔集中打一个蚂蚁,如果蚂蚁血量为0以下(这是重点)塔才切换目标。当第r秒时,血量在0及0以上的蚂蚁将蛋糕搬回。问:最终蚂蚁家里会有多少块蛋糕?

这个题坑就坑当蚂蚁血量为0时还要再打一次蚂蚁,而不是算为死亡,题目要排序尽管不理解,但你也拿他没办法对吧?

ac代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,k,w,r,c,b;
int a[100001];
int main()
{
    cin>>n>>m>>k>>w>>r;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    b=m/k;
    c=b*w;
    sort(a+1,a+n+1);
    int j=1;int sum=0,i=1;
    while(i<=r)
    {
        i++;
        a[j]-=c;
        if(a[j]<0) 
        {
            j++;
        } 
    }
        
    for(int i=1;i<=n;i++)
    if(a[i]>0)sum++;
    cout<<sum<<endl;
}

end-

猜你喜欢

转载自www.cnblogs.com/zhuier-xquan/p/10408581.html