当前位置: 代码迷 >> 综合 >> Weight of the System of Nested Segments
  详细解决方案

Weight of the System of Nested Segments

热度:85   发布时间:2023-12-06 01:44:18.0

Weight of the System of Nested Segments

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
题目分析

贪心+结构体排序
由于输出按照输入的顺序,所以将num定义为输入顺序;
对结构体排序,将权值最小的放在前2n项,再将它们用坐标排序;
需要n个嵌套,所以前2*n一定符合条件;

代码

#include<iostream>
#include<algorithm>
using namespace std;
struct k
{
    int val;int num;int pos;
}ok[200001];
bool cmp(k x,k y)
{
    return x.val < y.val;
}
bool cmp1(k x, k y)
{
    return x.pos < y.pos;
}
int main()
{
    int n, m;int t;cin >> t;while (t--){
    int sum = 0;cin >> n >> m;for (int i = 1; i <= m; i++){
    cin >> ok[i].pos >> ok[i].val;ok[i].num = i;}sort(ok + 1, ok + m + 1, cmp);sort(ok + 1, ok + n * 2+1, cmp1);for (int i = 1; i <= 2 * n; i++)sum += ok[i].val;cout << sum << endl;for (int i = 1; i <= n; i++)cout << ok[i].num << " " << ok[2 * n - i + 1].num << endl;cout << endl;}return 0;
}
  相关解决方案