说明
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;
}