全连
全連
題目描述
還記得若干年前那段互相比較《克羅地亞狂想曲》的分?jǐn)?shù)的日子嗎?
E.Space 喜歡打音游。
但是他技術(shù)不好,總是拿不到全連(Full Combo)。
現(xiàn)在他面前有一份樂譜,樂譜的其中一段有?nnn?個(gè)連續(xù)的單鍵音符。
相鄰兩個(gè)音符的到來時(shí)間均相等,我們可以認(rèn)為第?iii?個(gè)音符會在第?iii?個(gè)時(shí)刻到來。
點(diǎn)擊一個(gè)音符,E.Space 需要一段準(zhǔn)備時(shí)間來進(jìn)行移動手指之類的操作。由于音符的位置和周圍情況不同,點(diǎn)擊每個(gè)音符的準(zhǔn)備時(shí)間也不同。
在一個(gè)音符的準(zhǔn)備時(shí)間內(nèi),E.Space 沒法做到去點(diǎn)擊其它音符,但是不同音符的準(zhǔn)備時(shí)間范圍可以互相重疊。形式化地,令第?iii?個(gè)音符的準(zhǔn)備時(shí)間為?tit_it?i???個(gè)單位時(shí)間,那么如果 E.Space 選擇去點(diǎn)擊第?iii?個(gè)音符,那么他就沒法點(diǎn)擊所有到來時(shí)刻在 (i?ti?,i+tii + t_ii+t?i??)中的音符。
為了獲得更高的分?jǐn)?shù),E.Space 還計(jì)算了每個(gè)音符的性價(jià)比。一個(gè)音符的性價(jià)比等于點(diǎn)擊這個(gè)音符得到的分?jǐn)?shù)除以 E.Space 點(diǎn)擊它所需要的準(zhǔn)備時(shí)間。
E.Space 就不指望全連了,他只是想讓你幫他計(jì)算一下他最多可以得到多少分?jǐn)?shù)。
輸入格式
從文件?fc.in?中讀入數(shù)據(jù)。
第一行一個(gè)正整數(shù)?n?。
第二行?n?個(gè)正整數(shù),第i?個(gè)正整數(shù)表示?ti???。
第三行?n?個(gè)正整數(shù),第i?個(gè)正整數(shù)表示第?iii?個(gè)音符的性價(jià)比?aia_ia?i???。
輸出格式
輸出到文件?fc.out?中。
一行一個(gè)正整數(shù),表示 E.Space 可能達(dá)到的最高分?jǐn)?shù)。
樣例
樣例 1 輸入
5 2 3 2 1 2 3 1 2 9 4樣例 1 輸出
18樣例 1 解釋
E.Space 可以選擇點(diǎn)擊第?1,3,51,3,51,3,5?個(gè)音符,分?jǐn)?shù)為?2×3+2×2+2×4=18?。
數(shù)據(jù)范圍與提示
保證?ti≤nt_i \le nt?i??≤n?,ai≤109a_i \le 10^9a?i??≤10?9??
| 1 | 5 |
| 2 | 10 |
| 3 | 15 |
| 4 | 20 |
| 5 | 1000 |
| 6 | 2000 |
| 7 | 5000 |
| 8 | 10000 |
| 9 | 30000 |
| 10 | 50000 |
| 11 | 100000 |
| 12 | 200000 |
| 13 | 500000 |
| 14 | 800000 |
| 15 | 1000000 |
| 16 | 1000000 |
| 17 | 100000 |
| 18 | 100000 |
| 19 | 1000000 |
| 20 | 1000000 |
?
?
solution
?
dp 令f[i]表示前i個(gè)音符,第i個(gè)音符必點(diǎn)的最大收益。 那么f[i]=f[j]+a[i]*t[i] (i-t[i]>=j&&j+t[j]<=i) 有一個(gè)比較裸的想法是第1個(gè)限制主席樹,對于每一個(gè)1~j維護(hù)一稞線段樹,維護(hù)合法位置,最大值。 可惜MLE。 考慮一個(gè)j如果在i時(shí)能貢獻(xiàn),以后也能。 那么我們可以在一個(gè)j能貢獻(xiàn)時(shí)在把它加入。 用一個(gè)vector存某個(gè)點(diǎn)應(yīng)該在哪里加入,剩下的樹狀數(shù)組維護(hù)。轉(zhuǎn)載于:https://www.cnblogs.com/liankewei/p/10389599.html
總結(jié)
- 上一篇: .Net Core中使用RabbitMQ
- 下一篇: Codeforces 508E Arth