根据问题a和b表示课本的尺寸,我们定义两个数组c和d分别表示课本旋转到最优方向的宽度和高度得到该图形的最小周长为2(c1+c2+…+cn+max(d));
- 因为每个矩形的底都会被记录在答案中,所以选择a和b中较短的一边作为底即c,将较长的一边作为高即d;
- 若考虑所有课本的最长的一条边(如果有多个最大值,只考虑其中一个),我们可以看到无论如何构造,该值一定会被记录,所以最好将改值放在d中,因为它将导致d的其他所有值在最终答案中不被记录。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+10;
ll n;
void solve(){
cin>>n;
vector<pair<ll,ll>> a;
ll ans=0;
ll l=0,h=LLONG_MIN;
for(int i=0;i<n;i++){
ll x,y;
cin>>x>>y;
if(x>y) swap(x,y);
l+=x;
h=max(h,y);
}
cout<<2*(l+h)<<endl;
}
int main(){
solve();
return 0;
}