Pro3426 火烧赤壁 题解#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main(){ int n; cin>>n; long long a[20001],b[20001],l=0;//a数组存储起点,b数组存储终点,l表示最终长度 for(int i=0;i<n;i++) cin>>a[i]>>b[i]; sort(a,a+n); sort(b,b+n);//由于起点终点的顺序对答案不产生影响,对a数组和b数组进行排序 for(int i=0;i<n;i++) { l+=b[i]-a[i];//加上当前线段长度 if(i+1<n)//如果这条线段不是最后一条线段 if(b[i]>a[i+1])//如果这条线段与前一条线段有重复 l-=b[i]-a[i+1];//减去重复部分 } cout<<l;//输出 return 0; }
题目3426 火烧赤壁
3
评论
2023-08-27 15:18:52
|