问题标题: 酷町堂:2794 44分

0
1
已解决
高梓荣
高梓荣
新手天翼
新手天翼

2794哪错了?在线等,挺急的!

#include<bits/stdc++.h>
using namespace std;
struct KDT{
    int P,C;
}a[1010];
bool cmp(KDT x,KDT y)
{
    return x.P<y.P;
}
int main()
{
    int n,b,ans=0; 
    cin>>n>>b;
    for(int i=1;i<=n;i++)
        cin>>a[i].P>>a[i].C;
    sort(a+1,a+1+n,cmp);
    for(int i=1;i<=n;i++)
    {
        long long t=b/a[i].P;
        if(t>a[i].C)
        {
            b-=a[i].C*a[i].P;
            ans+=a[i].C;
        }
        else
        {
            ans+=t;
            break;
        }
    }
    cout<<ans;
    return 0;
}

凡是回答的人期末考试可以100虐全场哦!


0
已采纳
鲁天一
鲁天一
初级光能
初级光能

兄弟,代码长这样:

for(long long i=1;i<=n;i++)
 {
  m-=a[i].money();//这是结构体函数,等于你的a.P*a.C;
  if(m>0)//m是你的b
   sum+=a[i].d;//sum是你的ans,a[i].d是你的a[i].C;
  else
  {
   m+=a[i].money();
   sum+=m/a[i].s;//a[i].s是你的a[i].P
   break;
  }
 }

前面的全对,这是排完序后的操作代码。

我要回答