bzoj4619 4619: [Wf2016]Swap Space
作者:互联网
分析
首先不难想到我们要先处理容量变大的再处理容量变小的
对于第一种情况我们自然要选择x小的先格式化,因为这个样暂时存储所需空间较小,可以使得情况更优
而第二种情况y先考虑,因为这样对总空间的减少量小
代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime> #include<vector> #include<set> #include<map> #include<stack> using namespace std; struct node { int x,y; }; node a[1001000],b[1001000]; int cnt1,cnt2; inline bool cmp1(const node x,const node y){ return x.x<y.x; } inline bool cmp2(const node x,const node y){ return x.y>y.y; } int main(){ int n,m,i,j,k; scanf("%d",&n); for(i=1;i<=n;i++){ int x,y; scanf("%d%d",&x,&y); if(x<y)a[++cnt1].x=x,a[cnt1].y=y; else b[++cnt2].x=x,b[cnt2].y=y; } sort(a+1,a+cnt1+1,cmp1); sort(b+1,b+cnt2+1,cmp2); int Ans=0,now=0; for(i=1;i<=cnt1;i++){ if(now<a[i].x){ Ans+=a[i].x-now; now=a[i].x; } now+=a[i].y-a[i].x; } for(i=1;i<=cnt2;i++){ if(now<b[i].x){ Ans+=b[i].x-now; now=b[i].x; } now+=b[i].y-b[i].x; } cout<<Ans; return 0; }
标签:node,const,容量,Space,int,1001000,4619,Swap,include 来源: https://www.cnblogs.com/yzxverygood/p/10357543.html