巨无霸奶酪

题目描述

Pak Chanek有n个二维奶酪片。第i片奶酪可以表示为一个尺寸为ai×bi的矩形。我们想把它们安排在二维平面上,这样。

每块奶酪的每条边都平行于X轴或Y轴。
每块奶酪的底边是x轴的一段。
没有两片奶酪重叠,但它们的边可以接触。
它们形成一个相连的形状。
请注意,我们可以以任何顺序排列它们(最左边的那片奶酪不一定是第一片奶酪)。还要注意的是,我们可以以任何方式旋转每片奶酪,只要所有的条件仍然成立。

找出所建图形的最小可能周长。

输入

每个测试包含多个测试用例。第一行包含一个整数t(1≤t≤2⋅104)--测试用例的数量。下面几行包含每个测试用例的描述。

每个测试用例的第一行包含一个整数n (1≤n≤2⋅109)--Pak Chanek的奶酪片的数量。

每个测试案例接下来的n行中的第i行包含两个整数ai和bi(1≤ai,bi≤1010)--第i片奶酪的尺寸。

可以保证所有测试用例的n之和不超过2⋅105。

输出

对于每个测试案例,输出一条包含整数的值,代表构建的形状的最小可能周长。

样例输入

3
4
4 1
4 5
1 1
2 3
3
2 4
2 6
2 3
1
2 65

样例输出

26
24
134

提示

在第一个测试用例中,获得最小周长的一种方法是按如下方式排列奶酪片。
 



我们可以计算出构造形状的周长为2+5+1+1+1+1+1+3+1+5+1+2+3=26可以证明,我们不能得到更小的周长。

请考虑以下无效安排。


即使上面形状的周长是24,它不满足问题的所有条件。底部边缘1 x 1奶酪片不是 X轴的一部分。
在第二个测试用例中,获得最小周长的一种方法是按如下方式排列奶酪片。


我们可以计算出构造形状的周长为2+2+2+3+2+3+2+2+2+4=24.可以证明,我们不能得到更小的周长。
 

思路:由题已知两个相交的边的长度可以忽略不计,但是上下两个边是必须要有长度的;所以我们应该把长的做高,短的做底边,并且我们由题已知不管这些奶酪怎么排列他们的宽都是固定的都为2倍的最长高

所以就是所有最小的那个边*2加上最大那个边*2;

#include<bits/stdc++.h>
 
using namespace std;
typedef  long long int LL;
LL n,m,a,b,ma,mi,s,mama;
int main()
{
    cin>>m;
    while(m--)
    {
        s=0;mi=0;ma=0;mama=0;
        cin>>n;
        for(int i=0;i<n;i++)
        {
            cin>>a>>b;
            mi=min(a,b);
            ma=max(a,b);
            mama=max(ma,mama);
            s+=mi;
        }
        cout<<2*(s+mama)<<endl;
    }
    return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值