两种写法有何区别?
  • 板块学术版
  • 楼主return_second
  • 当前回复10
  • 已保存回复10
  • 发布时间2025/8/2 15:50
  • 上次更新2025/8/2 21:44:37
查看原帖
两种写法有何区别?
1047309
return_second楼主2025/8/2 15:50

rt,两种写法有何区别?

第一种(82分):

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
ll n,k;
ll ans;
struct node
{
    ll a,b,c;
}ice[N];
bool cmp(node x,node y)
{
    return x.c<y.c;
}
int main()
{
    freopen("icecream.in","r",stdin);
    freopen("icecream.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    ll sum1=0,sum2=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld",&ice[i].a,&ice[i].b,&ice[i].c);
        sum1+=ice[i].a;
        sum2+=ice[i].b;
        ans+=1ll*ice[i].c*ice[i].a; 
    }
    if(k<sum1||k>sum2)
    {
        puts("-1");
        return 0;
    }
    sort(ice+1,ice+n+1,cmp);
    k-=sum1;
    for(int i=1;i<=n;i++)
    {
        if(k>=(ice[i].b-ice[i].a))
        {
            ans+=1ll*(ice[i].b-ice[i].a)*ice[i].c;
            k-=(ice[i].b-ice[i].a);
        }
        else
        {
            ans+=1ll*k*ice[i].c;
            printf("%lld\n",ans);
            return 0;
        }
    }
    return 0;
}

第二种(100分):

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5;
ll n,k;
ll ans;
struct node
{
    ll a,b,c;
}ice[N];
bool cmp(node x,node y)
{
    return x.c<y.c;
}
int main()
{
    freopen("icecream.in","r",stdin);
    freopen("icecream.out","w",stdout);
    scanf("%lld%lld",&n,&k);
    ll sum1=0,sum2=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld%lld",&ice[i].a,&ice[i].b,&ice[i].c);
        sum1+=ice[i].a;
        sum2+=ice[i].b;
        ans+=1ll*ice[i].c*ice[i].a; 
    }
    if(k<sum1||k>sum2)
    {
        puts("-1");
        return 0;
    }
    sort(ice+1,ice+n+1,cmp);
    k-=sum1;
    for(int i=1;i<=n;i++)
    {
        if(k>=(ice[i].b-ice[i].a))
        {
            ans+=1ll*(ice[i].b-ice[i].a)*ice[i].c;
            k-=(ice[i].b-ice[i].a);
        }
        else
        {
            ans+=1ll*k*ice[i].c;
            break;
        }
    }
    printf("%lld\n",ans);
    return 0;
}
2025/8/2 15:50
加载中...