D. Berserk And Fireball(Educational Codeforces Round 91 (Rated for Div. 2))
生活随笔
收集整理的這篇文章主要介紹了
D. Berserk And Fireball(Educational Codeforces Round 91 (Rated for Div. 2))
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
題意
給一個序列A,A中所有元素均不同,再給一個序列B?,F允許兩種操作,
(1)花費x,去除連續k個元素
(2)花費y,取兩個連續的元素并把較小的元素去除
問是否可能讓A通過操作變為B,如果可以,最少費用是多少?
思路
B里面的元素相對位置如果與A不同,那么肯定不能讓A->操作->B
否則,B里面的元素相對位置與A相同
顯然,可以把這個A分成很多序列,對于每一個序列,處理操作相同,現討論一個序列的處理方法。
L [.P.]R
L、R不需要刪除
[…]均需要刪除,里面當中的最大值P
m表示[…]元素個數
如果m % k不為0
也就是說操作二至少要m%k次,即P消除其他元素。
如果m > k,則通過操作二,m>=k && m%k為0
否則m < k,則通過操作二,m = 1
(如果P > L && P > R,則輸出-1)
通過上述操作,可以讓m%k為0
顯然,必有A->操作->B
如果(x <= k * y),即操作一更優,那么對于m個元素,全部用操作一。
否則,盡量最大化操作二的次數。
如果P<L或P<R,則對于m個元素,全部用操作二
否則,一直進行操作一直到剩下k個元素,對k個元素進行操作一即可
AC代碼
總結
以上是生活随笔為你收集整理的D. Berserk And Fireball(Educational Codeforces Round 91 (Rated for Div. 2))的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: Python--判断一个数字的奇偶性
- 下一篇: html中选择器是什么意思,css中的选