按b从大到小排序。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define nMax 100010
struct T{
int a,b;
void read() {
scanf("%d%d",&a,&b);
}
};
T s[nMax];
int cmp(T u,T v) {
return u.b > v.b;
}
int n,t,cas=1;
int main() {
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
#endif
scanf("%d",&t);
while(t--) {
scanf("%d",&n);
for(int i=0;i<n;i++) s[i].read();
sort(s,s+n,cmp);
int ans=0;
int ret=0;
for(int i=0;i<n;i++) {
ret += s[i].a;
if(ans < ret + s[i].b) {
ans = ret + s[i].b;
}
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}

本文介绍了一个使用C++实现的程序,该程序通过输入一组特定的数据结构,并按其中一个成员变量进行降序排序,进而求解最优解。文章详细展示了如何定义结构体、读取数据、比较元素及实现排序算法的过程。

1368

被折叠的 条评论
为什么被折叠?



