QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#689882#7739. Knapsacki_love_qingyu#RE 0ms0kbC++202.7kb2024-10-30 19:02:202024-10-30 19:02:24

Judging History

你现在查看的是最新测评结果

  • [2024-10-30 19:02:24]
  • 评测
  • 测评结果:RE
  • 用时:0ms
  • 内存:0kb
  • [2024-10-30 19:02:20]
  • 提交

answer

#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
     long long int w;
     int id;
     bool operator <(const node &x)const{
         return x.w<w;
    }
};
priority_queue<node>q[40004];
long long v[40004],w[40004],dp[40004][5003];
priority_queue<int > p;
int main()
{
    int n,m,k;
    long long ans=0;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)cin>>v[i]>>w[i];
    for(int i=1;i<=n;i++)
        for(int j=m;j>=1;j--){
            for(int x=k;x>=1;x--)
                dp[j][x]=max(dp[j][x-1]+w[i],max(dp[j][x],dp[j-v[i]][x]+w[i]));
            if(j>=v[i])
                dp[j][0]=max(dp[j-v[i]][0]+w[i],dp[j][0]);   
            
        }
    for(int i=0;i<=m;i++)
        for(int x=0;x<=k;x++)
            ans=max(ans,dp[i][x]);
    cout<<ans;
    return 0;
}
/*
5 13 2
5 16
5 28
7 44
8 15
8 41
4 10 1
9 10
10 1
3 5
5 20
*/
// #include <bits/stdc++.h>
// #define ll long long 
// using namespace std;
// int main()
// {
//     int n,w,k;cin>>n>>w>>k;
//     vector<vector<ll > > a(n+1,vector<ll >(2));
//     for(int i=1;i<=n;++i) cin>>a[i][0] >> a[i][1];

//     vector<vector<ll > > dp(n+1,vector<ll>(w+1));
//     for(int i=1;i<=n;++i){
//         for(int j=1;j<=w;++j){
//             dp[i][j] = dp[i-1][j];
//             if(j>=a[i][0]){
//                 dp[i][j] = max(dp[i][j],dp[i-1][j-a[i][0]]+a[i][1]);
//             }
//         }
//     }
//     vector<int> vis(n+1,0);
//     for(int i=n,j=w;i>0;){
//         if(dp[i][j] == dp[i-1][j]){
//             i--;
//         }else{
//             vis[i] = 1;
//             j-=a[i--][0];
//         }
//     }
//     priority_queue<int> pq;
//     for(int i=1;i<=n;++i){
//         if(vis[i] == 0){
//             pq.push(a[i][1]);
//         }
//     }
    
//     ll ans = dp[n][w];
//     while(k && !pq.empty()){
//         k--;
//         ans += pq.top();
//         pq.pop();
//     }
//     //cout<<ans;
    
//     sort(a.begin()+1,a.end(),[&](const vector<ll>& p1,const vector<ll>& p2)->bool{
//         return p1[1]*p2[0] > p2[1]*p1[0];
//     });
//     ll ans2 = 0;
    
//     for(int i=1;i<=min(k,n);++i) ans2 += a[i][1];
//      vector<vector<ll > > b(1,vector<ll>(1));
//      for(int i=k+1;i<=n;++i) b.push_back(a[i]);
     
//      int nn = b.size()-1;
//      vector<vector<ll > > dp1(nn+1,vector<ll>(w+1, 0));
//      for(int i=1;i<=nn;++i){
//          for(int j=0;j<=w;++j){
//              dp1[i][j]=dp1[i-1][j];
//              if(j>=b[i][0])
//             dp1[i][j] = max(dp1[i][j],dp1[i-1][j-b[i][0]]+b[i][1]);
//          }
//      }
//      ans2 += dp1[nn][w];
//      cout<<max(ans2,ans)<<endl;
//     return 0;
// }


Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Runtime Error

input:

4 10 1
9 10
10 1
3 5
5 20

output:


result: