最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

CCPC 2021 湘潭全國(guó)邀請(qǐng)賽 D-Car 題解

2021-11-05 21:56 作者:昵稱不能為空voidf  | 我要投稿

現(xiàn)場(chǎng)沒(méi)開(kāi),按主辦方說(shuō)法是銅牌題莫名其妙變成金牌題,深感自己化式子能力不足

補(bǔ)題鏈接:https://acm.hdu.edu.cn/showproblem.php?pid=6941


題目大意:車車(視為點(diǎn))在一條長(zhǎng)為L(zhǎng)的長(zhǎng)直公路上行駛,一開(kāi)始沒(méi)有任何測(cè)速點(diǎn),規(guī)定從起點(diǎn)起步時(shí)速度為0,到達(dá)終點(diǎn)時(shí)速度必須為0,車車的加速度絕對(duì)值不能超過(guò)A,接下來(lái)有N個(gè)測(cè)速點(diǎn)依次建立:

  • 每個(gè)測(cè)速點(diǎn)以(S, V)的二元組整數(shù)形式給出,表示測(cè)速點(diǎn)建立在離起點(diǎn)S處,限速為V

  • 車車通過(guò)每個(gè)測(cè)速點(diǎn)時(shí)不得超過(guò)測(cè)速點(diǎn)規(guī)定的速度

對(duì)于每個(gè)測(cè)速點(diǎn)的建立,您需要回答建成后會(huì)不會(huì)影響車車從起點(diǎn)到終點(diǎn)的消耗的最短時(shí)間。影響輸出1,否則輸出0

官方題解:

沒(méi)了?沒(méi)了。

因?yàn)檫^(guò)于簡(jiǎn)略,自己補(bǔ)題的時(shí)候踩了很多坑……

先證明一下題解給的結(jié)論,由于我不會(huì)化式子,這里采用畫(huà)圖證明。

考慮在兩個(gè)測(cè)速點(diǎn)之間行駛,不失一般性,設(shè)v1為離起點(diǎn)更近的測(cè)速點(diǎn)的限速,令v1>v2,如果飚滿A的加速度,v-t圖大概長(zhǎng)這樣:

其中分界點(diǎn)兩側(cè)直線關(guān)于分界點(diǎn)到x軸的投影線對(duì)稱,由v-t圖的性質(zhì)我們知道圖下黑色部分的面積就是兩個(gè)測(cè)速點(diǎn)之間的距離。由于測(cè)速點(diǎn)距離一定,每個(gè)合法方案這樣畫(huà)出來(lái)的投影面積必須等于當(dāng)前黑塊的面積。我們將兩個(gè)測(cè)速點(diǎn)連線作三角形(v1, v2, 分界點(diǎn))的底,黑色部分被分為一個(gè)梯形和這個(gè)三角形。

畫(huà)圓是為了做垂線,即圖中的高

在分界點(diǎn)上作關(guān)于直線(v1, v2)的投影,我們得到了這個(gè)三角形的高?,F(xiàn)在我們考慮改變直線(v1, 分界點(diǎn))的斜率,在前半段加速階段不違反速度限制的題設(shè)下,如圖

考慮藍(lán)色部分與(v1, v2)構(gòu)成的三角形

為了方便我們?nèi)钥紤]勻速直線運(yùn)動(dòng),畫(huà)出藍(lán)線后分析一下這個(gè)圖的意義:如果我們另前半段加速度減緩,后半段減速的加速度變快的話,可以作出這樣一個(gè)距離與黑色部分面積一致的行駛方案,但是注意后半段因?yàn)榧铀俣冉^對(duì)值已經(jīng)超過(guò)上限,所以這樣一個(gè)方案是不可行的,為了讓時(shí)間消耗變小我們只能讓后半段的勻減速階段盡可能靠近上限A,這樣為了構(gòu)造一個(gè)距離(面積)等于三角形(v1, v2, 分界點(diǎn))的三角形,只能如圖所示做一個(gè)第3頂點(diǎn)不與平移至分界點(diǎn)的底線相交的三角形:

然后你發(fā)現(xiàn)此時(shí)藍(lán)線的末端在x坐標(biāo)上已經(jīng)超過(guò)v2點(diǎn),即這種方案耗時(shí)更久。

對(duì)于非勻加速直線運(yùn)動(dòng)的畫(huà)法,作圖發(fā)現(xiàn)為了讓其面積滿足需求,必須有一塊面積補(bǔ)充其前期因?yàn)榈陀诜纸琰c(diǎn)產(chǎn)生的代價(jià),使得右端點(diǎn)x坐標(biāo)大于v2點(diǎn):

想要讓時(shí)間更短的話就只能把這些多的面積盡可能往前面堆,而堆到極限就是我們最初畫(huà)出來(lái)兩側(cè)直線對(duì)稱的方案。于是結(jié)論證畢。

現(xiàn)在開(kāi)始考慮題目:如何判斷一個(gè)測(cè)速點(diǎn)是否影響當(dāng)前最優(yōu)時(shí)間?

還是從圖上看,當(dāng)一個(gè)點(diǎn)入侵了前面那個(gè)畫(huà)法作出來(lái)的三角形的時(shí)候,最優(yōu)行駛方案就需要根據(jù)這個(gè)測(cè)速點(diǎn)進(jìn)行調(diào)整了:

粉色點(diǎn)為新加入的測(cè)速點(diǎn),橙色線表示修改后的方案

當(dāng)然如果當(dāng)前測(cè)速點(diǎn)沒(méi)有入侵任何一段這樣的圖形,那么就說(shuō)這個(gè)測(cè)速點(diǎn)無(wú)效,輸出0,并且什么都不做。

現(xiàn)在考慮兩個(gè)問(wèn)題:

  • 如何維護(hù)這樣的一系列圖形,使得復(fù)雜度正確?

  • 題目給的測(cè)速點(diǎn)是(S, V),怎么拿到它在v-t圖上的位置?

對(duì)于第一個(gè)問(wèn)題,其實(shí)我們發(fā)現(xiàn)只需要維護(hù)關(guān)鍵測(cè)速點(diǎn)關(guān)于距離的序列,每次新加入一個(gè)測(cè)速點(diǎn)只需要二分就能得到它受哪一段制約,這樣就能保證復(fù)雜度正確。實(shí)現(xiàn)可以按官方題解說(shuō)的用一個(gè)map來(lái)維護(hù)。

對(duì)于第二個(gè)問(wèn)題,本人的思路略復(fù)雜,開(kāi)始化式子:

式子中只有t1和t2是未知的,聯(lián)立距離公式和速度公式,化簡(jiǎn)后解出關(guān)于t1的一元二次方程:

先搬一個(gè)解二元一次方程的輪子:

解這個(gè)方程,可以得到分界點(diǎn)的位置,這樣我們可以得到一個(gè)分段函數(shù),對(duì)于區(qū)間[x1, x2],我們先判斷S在分界點(diǎn)的哪一側(cè),然后用勻加速度位移公式:v_1t%2B%5Cfrac%7B1%7D%7B2%7DAt%5E2%3DS解出車車到S這點(diǎn)需要的時(shí)間,然后可以算出原圖中在這點(diǎn)的速度。如果這個(gè)速度要小于等于新建限速點(diǎn)規(guī)定的速度,那么就可以輸出0啦。

如果影響,則要修改前面說(shuō)的map,因?yàn)樾虏迦氲南匏冱c(diǎn)可能會(huì)使兩側(cè)的點(diǎn)變?yōu)闊o(wú)效限速點(diǎn),如圖

具體實(shí)現(xiàn)就是先定位S將要插入的兩側(cè)節(jié)點(diǎn),然后一直處理到這個(gè)連線斜率絕對(duì)值小于等于A就行了,但是實(shí)際上我們不能直接獲得它在時(shí)間軸上的位置,所以還是得繼續(xù)解二元一次方程……

另外,將起點(diǎn)和終點(diǎn)視為一個(gè)限速為0的起始限速點(diǎn),再特判掉0和L處的限速點(diǎn),就不用擔(dān)心邊界問(wèn)題了。

這么做的話,每個(gè)點(diǎn)最多被插入一次刪除一次均攤下來(lái)的操作一共是O(n)的,算上map的復(fù)雜度,是O(n%5Clog_%7B2%7D%7Bn%7D),可以通過(guò)本題。


完整代碼:(板子很長(zhǎng),你們?nèi)桃幌拢?/span>

https://paste.ubuntu.com/p/hzSNkBmxy6/

表現(xiàn):



CCPC 2021 湘潭全國(guó)邀請(qǐng)賽 D-Car 題解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
翁牛特旗| 嘉义县| 三台县| 垣曲县| 墨竹工卡县| 社旗县| 伊吾县| 金川县| 鲁山县| 南京市| 平罗县| 凤凰县| 建阳市| 枞阳县| 灵宝市| 晴隆县| 富宁县| 治县。| 嘉荫县| 公主岭市| 邳州市| 响水县| 当涂县| 高安市| 彭泽县| 邵武市| 徐汇区| 丰镇市| 赤水市| 灵石县| 石棉县| 黄骅市| 清丰县| 车致| 青岛市| 喀喇沁旗| 包头市| 安阳县| 永胜县| 乌鲁木齐县| 遂宁市|