问题标题: 酷町堂:2625

0
0
已解决
李锦昊
李锦昊
中级天翼
中级天翼

WA90代码

#include<iostream>
#include<algorithm>
using namespace std;
long long n,s,cnt;
struct me {
    long long Pi,Ci;
} a[100005];
bool cmp(me x,me y) {
    return x.Pi<y.Pi;
}
int main() {
    cin>>n>>s;
    for(int i=1; i<=n; i++) {
        cin>>a[i].Pi>>a[i].Ci;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1; i<=n; i++) {
        if(s>=(a[i].Pi*a[i].Ci)) {
            s-=(a[i].Pi*a[i].Ci);
            cnt+=a[i].Ci;
        } else {
            int m=s*1.0/a[i].Pi;
            cnt+=m;
            break;
        }
    }
    cout<<cnt;
    return 0;
}

 


0
已采纳
武奕楷
武奕楷
新手天翼
新手天翼
sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        if(a[i].p*a[i].c<m){
            cnt+=a[i].c;
            m-=a[i].p*a[i].c;
        } else {
            cnt+=m/a[i].p;
            break;
        }
    }
    cout<<cnt;

 

0
李奕歌
李奕歌
初级天翼
初级天翼

主函数:

n=read();
    m=read();
    for (int i=1;i<=n;i++){ a[i].c=read();a[i].p=read(); }
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=n;i++){
        LL num=min(m/a[i].c,a[i].p);
        ans+=num;m-=num*a[i].c;
    }
    printf("%lld",ans);

定义的函数:

inline bool cmp(const item &a,const item &b){return a.c<b.c;}
inline LL min(LL a,LL b){ return a<b?a:b; }
inline LL read(){
    LL x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}

除了n是int,m,ans,rest都是LL,结构体对的

0
被禁言 张皓轩
张皓轩
中级光能
中级光能
核心:
int n;
unsigned long long ans,v;
struct node{
    unsigned long long p,c;
}a[100001];
bool cmp(node x,node y){
    return x.p<y.p;
}
int main(){
    cin>>n>>v;
    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++){
        if(v>a[i].p*a[i].c){
            v-=a[i].p*a[i].c;
            ans+=a[i].c;
        }else{
            ans+=v/a[i].p;
            break;
        }
    }
    cout<<ans;
    return 0;
}

 

0
汪恺恒
汪恺恒
中级启示者
中级启示者

定义

long long n,ans,b;
struct P{
    long long p,c;
}a[100005];
bool cmp(P a,P b){
    return a.p<b.p;
}

核心

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 x=b*1.0/a[i].p;
        if(x>a[i].c){
            x=a[i].c;
        }
        ans+=x;
        b-=a[i].p*x;
    }
输出ans

 

0
李子杰
李子杰
资深光能
资深光能

直接参考并复制 2794 买礼品,连样例都一样!!!

李子杰在2021-09-11 11:43:57追加了内容

不是完全复制,有修改

0
李子杰
李子杰
资深光能
资深光能

直接参考并复制 2794 买礼品,连样例都一样!!!

李子杰在2021-09-11 11:44:29追加了内容

不是完全复制,有修改

我要回答