日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JZOJ 3.10 1540——岛屿

發布時間:2025/7/14 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 3.10 1540——岛屿 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

每當下雨時,FJ的牧場都會進水。由于牧場地面高低不平,被水淹沒的地方不是很統一,形成一些島嶼。

FJ的牧場可描述成一個一維的地形圖,由N(1 <= N <= 100,000)個彼此相連的柱狀的高度值組成。高度值為H(1)…H(n)。假定這個地形圖的兩端有兩條無限高的墻圍著。


當雨一直下時,地形圖上最低的區域先被水淹沒,形成一些不相鄰的島嶼。一旦水面高度到達一個區域的高度,則認為這個區域被淹沒。

左圖,在當前水面時,有4個島嶼。右圖,在水面升高后,剩下2個島嶼。顯然,最終所有的區域都會沉入水面。

算出當雨從開始下到最后所有島嶼沉入水中,最多時可形成多少個島嶼。

輸入

第1行:1個整數N

第2..N+1行:每行一個整數,表示一個區域的高度H(i). (1 <= H(i) <= 1,000,000,000)

輸出

第1行: 1個整數,表示最多時能看到的島嶼數

樣例輸入

8

3

5

2

3

1

4

2

3

樣例輸出

4


感謝上天,終于讓我ACC了
分析:
步驟一:現將高度從矮到高排序,將同樣高度而且為相鄰的島嶼合并。
步驟二:循環,枚舉如果淹沒了i這個區域的島嶼數
如果這個區域的左邊和右邊都沒有被淹沒,就將島嶼數加一;如果這個區域的左邊和右邊都被淹沒了,則島嶼數減一。如果當前島嶼數大于max,則更新最大值。


代碼如下:

var a,b,c:array[0..100001]of longint;i,j,ans,max,n,x,m:longint;procedure qsort(l,r:longint); var i,j,mid:longint; beginif l>=r then exit;i:=l; j:=r; mid:=a[(l+r) div 2];repeatwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if i<=j thenbegina[0]:=a[i];a[i]:=a[j];a[j]:=a[0];b[0]:=b[i];b[i]:=b[j];b[j]:=b[0];inc(i);dec(j);end;until i>j;qsort(l,j);qsort(i,r); end;beginassign(input,'islands.in');assign(output,'islands.out');reset(input);rewrite(output);readln(m);n:=0;for i:=1 to m dobeginreadln(x);if x<>c[n] thenbegininc(n);c[n]:=x;b[n]:=n;end;end;a:=c;qsort(1,n);ans:=1;for i:=1 to n dobeginif (c[b[i]-1]>c[b[i]])and(c[b[i]+1]>c[b[i]]) then inc(ans);if (c[b[i]-1]<=c[b[i]])and(c[b[i]+1]<=c[b[i]]) then dec(ans);if max<ans then max:=ans;end;write(max);close(input);close(output); end.

轉載于:https://www.cnblogs.com/Comfortable/p/8412377.html

總結

以上是生活随笔為你收集整理的JZOJ 3.10 1540——岛屿的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。