项目场景:
五一节放假
问题描述
五一节放假了,小仪高高兴兴地去奶奶家玩。在去奶奶家的路上,有n个小池塘,池塘很浅很浅,所以没有危险的。每个池塘中有若干条鱼。抓同一个池塘中的每条鱼的时间是相同的,但抓不同池塘中的鱼的时间可能不同。为了不让奶奶久等,小仪只有t分钟的时间能用来抓鱼。请问小仪最多能抓多少条鱼呢?
样例输入#1
3 262 1 34 5 6
输出#1
5
解释#1
小仪可以花8分钟在第1个池塘抓2条鱼,花5分钟时间在第2个池塘抓1条鱼,花12分钟时间在第3个池塘抓2条鱼。小仪最多可以抓5条鱼。
解决方案:
#include<bits/stdc++.h>
using namespace std;
struct zy
{
int a,b;
};
int cmp(zy x,zy y)
{return x.b<y.b;}
zy s[100000];
int main()
{
long long int i,j,n,m,sum=0;
cin>>n>>m;
for(i=1;i<=n;i++)
{cin>>s[i].a;}
for(i=1;i<=n;i++)
{cin>>s[i].b;}
sort(s+1,s+n+1,cmp); //排序,排完了开始抓鱼
for(i=1;i<=n;i++) //一个池塘一个池塘的抓鱼
{
for(j=1;j<=s[i].a;j++) //循环的范围为什么是j<=s[i].a
{
if(m>=s[i].b)
{
sum++;
m=m-s[i].b;
}
}
}
cout<<sum;
}