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