火烧赤壁 洛谷 vijos

来源:互联网 发布:数据库缓存同步redis 编辑:程序博客网 时间:2024/04/25 22:02

题目大意

给出n,a[i],b[i],为n个数,从a到b的船只被烧毁求出所有被烧毁的船只的和。

思路:

听说是2005 普及组数据加强版,然后成了提高组+的题????不就是加了一个离散化嘛…
思路就是给a排序,然后用b来进行比较,分为比前面的最大b值大和小两种情况,分别讨论加上对答案的影响。

程序:

vari,n,max,z:longint;a,b:array[0..100000] of longint;procedure init;vari:longint;beginreadln(n);for i := 1 to n dobeginreadln(a[i],b[i]);end;end;procedure qsort(l,r:longint);vari,j,m,t:longint;begini := l;j := r;m := a[(i+j) div 2];repeatwhile a[i]<m do inc(i);while a[j]>m do dec(j);if i<=j thenbegint := a[i];a[i] := a[j];a[j] := t;t := b[i];b[i] := b[j];b[j] := t;inc(i);dec(j);end;until i>=j;if i<r then qsort(i,r);if l<j then qsort(l,j);end;procedure main;vari:longint;beginz := b[1]-a[1];max := b[1];for i := 2 to n dobeginif (a[i]<max) and (b[i]>max) thenbeginz := z+b[i]-max;max := b[i];endelsebeginif (a[i]>max) thenbeginz := z+b[i]-a[i];max := b[i];end;end;end;writeln(z);end;begininit;qsort(1,n);main;end.
1 0
原创粉丝点击