• 板块题目总版
  • 楼主梦dreamIN
  • 当前回复12
  • 已保存回复12
  • 发布时间2020/6/13 21:22
  • 上次更新2023/11/7 00:42:32
查看原帖
292483
梦dreamIN楼主2020/6/13 21:22
题目描述 Description
某小学有n名小朋友,儿童节到了要给他们带去礼物。调查显示,有Ci个小朋友想要第i种礼品,这种礼物的售价为Pi。现在有B元的预算,他最多可以满足多少小朋友?(B的值可能很大)


 
输入描述 Input Description
第一行,两个整数,N B

接下来N行,每行两个整数,Pi Ci


 
输出描述 Output Description
输出能有多少小朋友满意


 
样例输入 Sample Input
5 50 
5 3 
1 1 
10 4 
7 2 
60 1
样例输出 Sample Output
8
数据范围及提示 Data Size & Hint
所有数据的范围不超过long long

N<=100000
#include<bits/stdc++.h>
using namespace std;
struct etj{
    int Pi,Ci;
}a[1010];
bool cmp(etj a,etj b)
{
    return a.Pi<b.Pi;
}
int main()
{
    long long n,b; 
    int ans=0;
    cin>>n>>b;
    for(int i=1;i<=n;i++)
        cin>>a[i].Pi;
    for(int i=1;i<=n;i++)
        cin>>a[i].Ci;
  sort(a+1,a+1+n,cmp);
 for(int i=1;i<=n;i++)
 {
     b-=a[i].Pi*a[i].Ci;
    if(b>0)//如果这时候钱还有剩余 
    {
      ans+=a[i].Ci;
    }
   else
   {
     b+=a[i].Pi*a[i].Ci;
     ans+=b/a[i].Pi;
     break;
   }
 }
    cout<<ans;
    return 0;
}

输出不对

2020/6/13 21:22
加载中...