[luogu4027] [NOI2007]货币兑换
前言
回光返照
題目相關
link
題目大意
有KKK天,第III天的A券價值為AIA_IAI?,B券價值為BIB_IBI?,買券的獲得A券B券比例為RateIRate_IRateI?,還也可以百分比賣券
必然存在一種最優的買賣方案滿足:
每次買進操作使用完所有的人民幣;
每次賣出操作賣出所有的金券。
題解
我們發現,所有操作由于給出的保證變成了某天買入然后某天賣出
然后現在發現一種非常方便的大復雜度做法
我們設fif_{i}fi?表示111這天擁有111單位錢,到第iii天時的最大所有價值
我們發現最后答案就是fKf_{K}fK?
考慮轉移:
f1=1f_{1}=1f1?=1
fi=max(fi?1,Ratej?Ai+BiRatej?Aj+Bj?fj)f_{i}=max(f_{i-1},\frac{Rate_j*A_i+B_i}{Rate_j*A_j+B_j}*f_{j})fi?=max(fi?1?,Ratej??Aj?+Bj?Ratej??Ai?+Bi???fj?)
fi/Ai=max(fi?1,Ratej+Bi/AiRatej?Aj+Bj?fj)f_{i}/A_i=max(f_{i-1},\frac{Rate_j+B_i/A_i}{Rate_j*A_j+B_j}*f_{j})fi?/Ai?=max(fi?1?,Ratej??Aj?+Bj?Ratej?+Bi?/Ai???fj?)
我們發現現在要支持的是給若干三元組(a,b,c)(a,b,c)(a,b,c)每次給出XXX,求(X?a+b)?c(X*a+b)*c(X?a+b)?c最大值,并加入一個新的三元組(a,b,c)(a,b,c)(a,b,c)
再化簡:支持的是給若干二元組(a,b)(a,b)(a,b)每次給出XXX,求X?a+bX*a+bX?a+b最大值,并加入一個新的二元組(a,b)(a,b)(a,b)
使用李超線段樹即可
總結
鴿了,原本想用cdq分治的
總結
以上是生活随笔為你收集整理的[luogu4027] [NOI2007]货币兑换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [uoj24]缩紧优化
- 下一篇: 对于我的博客的相关说明