文章
24
粉丝
27
获赞
120
访问
6.4k
#include<bits/stdc++.h>
using namespace std;
struct node {
long long r, h, s;
} a[1005]; //结构体,储存半径,高度,侧面积
int main() {
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> a[i].r >> a[i].h;
a[i].s = 2 * a[i].r * a[i].h;
}
sort(a, a + n, [](node x, node y) {
return x.s > y.s;
}); //按侧面积降序排列,这样从前往后遍历优先选侧面积大的
long long result = 0;
for (int i = 0; i < n; i++) {
long long sum = a[i].s + a[i].r * a[i].r; //侧面积大不代表侧面积加顶面最大,因此每个都要作为最下面试一试
//或者我们举个极限例子,侧面积超级大,半径很小,顶面最小的,上面根本放不了其他大圆柱(题目要求最底下摞的圆柱半径要最大)
int count =...
登录后发布评论
暂无评论,来抢沙发