2774 火燒赤壁

weixin_30924079發表於2020-04-04

2774 火燒赤壁

連結:http://codevs.cn/problem/2774/

 

 時間限制: 1 s
 空間限制: 16000 KB
 
 
 
 
題目描述 Description

曹操平定北方以後,公元208年,率領大軍南下,進攻劉表。他的人馬還沒有到荊州,劉表已經病死。他的兒子劉琮聽到曹軍聲勢浩大,嚇破了膽,先派人求降了。
孫權任命周瑜為都督,撥給他三萬水軍,叫他同劉備協力抵抗曹操。
隆冬的十一月,天氣突然回暖,颳起了東南風。
沒想到東吳船隊離開北岸大約二里距離,前面十條大船突然同時起火。火借風勢,風助火威。十條火船,好比十條火龍一樣,闖進曹軍水寨。那裡的船艦,都擠在一起,又躲不開,很快地都燒起來。一眨眼工夫,已經燒成一片火海。
曹操氣急敗壞的把你找來,要你鑽入火海把連環線上著火的船隻的長度統計出來!

輸入描述 Input Description

第一行:N
以後N行,每行兩個數:Ai Bi(表示連環線上著火船隻的起始位置和終點,-10^9<=Ai,Bi<=10^9)

輸出描述 Output Description

輸出著火船隻的總長度

樣例輸入 Sample Input

3
-1 1
5 11
2 9

樣例輸出 Sample Output

11

資料範圍及提示 Data Size & Hint

n<=20000
如果Ai=Bi是一個點則看作沒有長度

題解:先排大小,上一個的終點和下一個起點之間的距離除去。注意:如果用陣列下標記錄,會棧溢位

#include<bits/stdc++.h>
using namespace std;
const int maxn=20005;
int a[maxn],b[maxn];

int main(){
    int N,cnt=0,t=0;
    cin>>N;
    for(int i=1;i<=N;i++)cin>>a[i]>>b[i];
    sort(a+1,a+1+N);
    sort(b+1,b+1+N);
    int m=b[N]-a[1];
    for(int i=2;i<=N;i++)
    if(a[i]>b[i-1])m-=a[i]-b[i-1];
    cout<<m<<endl;
}

 

轉載於:https://www.cnblogs.com/EdSheeran/p/7445383.html

相關文章