比赛 2026.9.5 评测结果 WWEEEAEEEEEWEEEEEEAAAAAAE
题目名称 Asteroid Mining 最终得分 28
用户昵称 yanglich 运行时间 3.854 s
代码语言 C++ 内存使用 6.85 MiB
提交时间 2026-09-05 11:54:06
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,w[500005],v[500005];
int dp[1000004];
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    freopen("Mining.in","r",stdin);
    freopen("Mining.out","w",stdout);
    cin>>n>>m;
    int x=-1,b=0;
    for(int i=1;i<=n;i++){
        cin>>v[i]>>w[i];
        if(x==-1){
            x=w[i];
        }else if(x!=w[i]){
            b=1;
        }
    }
    if(b==0){
        sort(v+1,v+n+1);
        int ans=0,sum;
        for(int i=n;i>=1;i--){
            if(sum+w[1]>m){
                break;
            }
            sum+=w[1];
            ans+=v[i]; 
        }
        cout<<ans;
        return 0;
    }
    for(int i=1;i<=n;i++){
        for(int d=m;d>=w[i];d--){
            dp[d]=max(dp[d],dp[d-w[i]]+v[i]);
        }    
    }
    cout<<dp[m];
    return 0;
}