张乐凡
(string dp[100005])
1
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,w,k,ans;
struct node{
int a,b;
}a[100005];
bool cmp(node a,node b){
if(a.b==b.b) return a.a>b.a;
return a.b<b.b;
}
signed main(){
cin>>n>>w>>k;
for(int i=1;i<=n;i++) cin>>a[i].a>>a[i].b;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=k;i++){
if(w>=a[i].b){
w-=a[i].b;
w+=a[i].a;
ans+=a[i].a;
}
}
cout<<ans;
return 0;
}
有没有大佬帮忙调一下。
1 个赞
张乐凡
(string dp[100005])
2
现 \color{red}{WA20} 。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,w,k;
struct node{
int a,b;
}a[100005];
bool cmp(node a,node b){
if(a.b==b.b) return a.a>b.a;
return a.b<b.b;
}
signed main(){
cin>>n>>w>>k;
for(int i=1;i<=n;i++) cin>>a[i].a>>a[i].b;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=k;i++){
if(w>=a[i].b){
w-=a[i].b;
w+=a[i].a+a[i].b;
}
}
cout<<w;
return 0;
}
1 个赞
张乐凡
(string dp[100005])
3
已 \color{green}{AC} 。
@Dalton 关帖。
核心代码:
for(int i=1,j=1;i<=k;i++){
for(;j<=n&&a[j].b<=w;j++) que.push(a[j].a);
if(que.empty()) break;
w+=que.top();
que.pop();
}
1 个赞