追梦算法----P1024. 僵尸水族馆

这篇博客介绍了一个关于植物大战僵尸游戏中僵尸水族馆的问题,学姐需要在有限的资源下决定收养哪些僵尸。通过输入每天僵尸的食脑量,算法寻找能收养最多僵尸的策略。博客中提供了代码实现,展示了如何在已知未来所有僵尸食量的情况下,确定最大收养数量。
摘要由CSDN通过智能技术生成

说明

Zoey学姐最近沉迷于玩植物大战僵尸,其中有个迷你游戏是僵尸水族馆,周围的僵尸听说这里有免费脑子吃都飞速赶来,希望学姐能收养它们。每天都会来一个新的僵尸,收养他们以后每天都要给他们喂脑子,也可以决定不收养,同时每个僵尸的食量不同但固定,但学姐能喂给它们脑子有限只有x个,并且学姐在n天以后就要好好学习不喂僵尸了,那么到最后一天学姐最多可以收养多少只僵尸?(为降低难度,默认学姐第一天就知道后面每一天会来什么僵尸)

输入格式

首先给出一个整数n为学姐会喂多少天僵尸和x为学姐可以喂的脑子总数,然后剩下n行依次给出当天来求收养的僵尸每天食量a。

(0<=n<=1000,0<=x<=100000,0<=a<=100000)

(收养的僵尸每天都要吃食量的脑子数)

输出格式

一个整数,表示到最后一天学姐的僵尸水族馆里收养的僵尸数

3 10

1

1

1

样例

输入数据 1

3 10
1
1
1

Copy

输出数据 1

3

Copy

提示

第一二三天来的僵尸均收养,所以得3

总结反思:

一定要仔细的看题目,仔细!!!

这道题不难,因为审题不准确,一直停留了很久。。。。

#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include <iostream>
#include <string.h>
#include <queue>
using namespace std;
int a[1005];
int day,n,ans=0;
int main() {
    scanf("%d%d",&day,&n);
    for(int i=0; i<day; i++) {
            int temp;
        scanf("%d",&temp);
        a[i]=temp*(day-i);
    }
    sort(a,a+day);
    for(int i=0; i<day; i++) {
    if(n>=a[i])
    {
        ans++;
        n-=a[i];
    }
    }
    printf("%d\n",ans);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值