Vijos 1165-火烧赤壁
描述
曹操平定北方以后,公元208年,率領(lǐng)大軍南下,進(jìn)攻劉表。他的人馬還沒(méi)有到荊州,劉表已經(jīng)病死。他的兒子劉琮聽到曹軍聲勢(shì)浩大,嚇破了膽,先派人求降了。
孫權(quán)任命周瑜為都督,撥給他三萬(wàn)水軍,叫他同劉備協(xié)力抵抗曹操。
隆冬的十一月,天氣突然回暖,刮起了東南風(fēng)。
沒(méi)想到東吳船隊(duì)離開北岸大約二里距離,前面十條大船突然同時(shí)起火。火借風(fēng)勢(shì),風(fēng)助火威。十條火船,好比十條火龍一樣,闖進(jìn)曹軍水寨。那里的船艦,都擠在一起,又躲不開,很快地都燒起來(lái)。一眨眼工夫,已經(jīng)燒成一片火海。
曹操氣急敗壞的把你找來(lái),要你鉆入火海把連環(huán)線上著火的船只的長(zhǎng)度統(tǒng)計(jì)出來(lái)!
格式
輸入格式
第一行:N
以后N行,每行兩個(gè)數(shù):Ai Bi(表示連環(huán)線上著火船只的起始位置和終點(diǎn),-10^9<=Ai,Bi<=10^9)
輸出格式
輸出著火船只的總長(zhǎng)度
樣例1
樣例輸入1
3
-1 1
5 11
2 9
Copy
樣例輸出1
11
Copy
提示
n<=20000
如果Ai=Bi是一個(gè)點(diǎn)則看作沒(méi)有長(zhǎng)度
來(lái)源
huyichen
.
.
.
.
.
分析
我們先定義兩個(gè)數(shù)組,記錄坐標(biāo),再全部賦給一個(gè)新的數(shù)組,進(jìn)行排序,就可以判斷是否可用(bz判斷),再通過(guò)一個(gè)find函數(shù),找到原位置,就可以算了。
然而本程序,在洛谷會(huì)被卡兩個(gè)點(diǎn),要開O2才能過(guò)……
.
.
.
.
.
程序:
#include<iostream> #include<stdio.h> #include<algorithm> using namespace std; long c[40100]; int n,m; void read(long &x) {x=0; int f=1; char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1; ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}x*=f; }int find(long x) {for (int i=1;i<=m;i++)if (c[i]==x) return i; }int main() {long ans=0,a[20100],b[20100];bool bz[40100];cin>>n;for (int i=1;i<=n;i++){read(a[i]);read(b[i]);c[++m]=a[i];c[++m]=b[i]; }sort(c+1,c+m+1);for (int i=1;i<=n;i++){a[i]=find(a[i]);b[i]=find(b[i])-1;for (int j=a[i];j<=b[i];j++)bz[j]=true;}for (int i=1;i<=m;i++)if (bz[i]) ans+=c[i+1]-c[i];cout<<ans;return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9499903.html
總結(jié)
以上是生活随笔為你收集整理的Vijos 1165-火烧赤壁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: POJ 3614-Sunscreen
- 下一篇: hihoCoder #1384 : Ge