1. 程式人生 > >Luogu P1023 稅收與補貼問題

Luogu P1023 稅收與補貼問題

一個 關於 max ceil ron 明顯 -1 blog 由於

P1023 稅收與補貼問題

題目背景

每樣商品的價格越低,其銷量就會相應增大。現已知某種商品的成本及其在若幹價位上的銷量(產品不會低於成本銷售),並假設相鄰價位間銷量的變化是線性的且在價格高於給定的最高價位後,銷量以某固定數值遞減。(我們假設價格及銷售量都是整數)

對於某些特殊商品,不可能完全由市場去調節其價格。這時候就需要政府以稅收或補貼的方式來控制。(所謂稅收或補貼就是對於每個產品收取或給予生產廠家固定金額的貨幣)

題目描述

你是某家咨詢公司的項目經理,現在你已經知道政府對某種商品的預期價格,以及在各種價位上的銷售情況。要求你確定政府對此商品是應收稅還是補貼的最少金額(也為整數),才能使商家在這樣一種政府預期的價格上,獲取相對其他價位上的最大總利潤。

總利潤=單位商品利潤*銷量

單位商品利潤=單位商品價格 - 單位商品成本 (- 稅金 or + 補貼)

輸入輸出格式

輸入格式:

輸入的第一行為政府對某種商品的預期價,第二行有兩個整數,第一個整數為商品成本,第二個整數為以成本價銷售時的銷售量,以下若幹行每行都有兩個整數,第一個為某價位時的單價,第二個為此時的銷量,以一行-1,-1表示所有已知價位及對應的銷量輸入完畢,輸入的最後一行為一個單獨的整數表示在已知的最高單價外每升高一塊錢將減少的銷量。

輸出格式:

輸出有兩種情況:若在政府預期價上能得到最大總利潤,則輸出一個單獨的整數,數的正負表示是補貼還是收稅,數的大小表示補貼或收稅的金額最小值。若有多解,取絕對值最小的輸出。

如在政府預期價上不能得到最大總利潤,則輸出“NO SOLUTION”。

輸入輸出樣例

輸入樣例#1:
31
28 130
30 120
31 110
-1  -1
15
輸出樣例#1:
4

Solution

第一次用cnblogs的latex好激動——

題意

這是第一次給題解寫題意QwQ,

求單價對應的銷售量

我們設$\ d(i)$表示售價為i的銷量
因為已知相鄰價位之間售價成線性關系
設前一個讀入單價為l ,當前單價為 r
那麽可得到

$\mbox{當售價k在l..r之間時} \frac{d(r)-d(l)}{r-l} = \frac{d(k)-d(l)}{k-l} $


$\mbox{可得:} d(k)= (d(r)-d(l))*\frac{k-l}{r-l}+d(l)$

於是我們可以計算出對應的d
最高價位之後的d,可以直接按照題意求

求政府控制量

由題
設w為政府期望價,f為成本,x為控制量,i為其他某個價位則

那對於其他所有合法的價位滿足
$(w-f+x)*d(w)>=(i-f+x)*d(i)$
$(w-f)*d(w)+x*d(w)>=(i-f)*d(i)+x*d(i)$
$x*d(w)-x*d(i)>=(i-f)*d(i)-(w-f)*d(w)$
$x*(d(w)-d(i))>=(i-f)*d(i)-(w-f)*d(w)$

設$(d(w)-d(i))=B$ 和$(i-f)*d(i)-(w-f)*d(w)=C$
這裏考慮一下B的正負性,
因為 $w<>i$ 那麽不存在$B=0$
若$B>0$,$x>=\frac {C}{B}$
若$B<0$,$x<=\frac {C}{B}$
計算出每個合法價位的關於x的解集
然後解不等式組便可得出結論

解不等式組

我們假設最後解集在$min<=x<=max$
那麽我們
在每次$B>0$時候嘗試找最大的min(就是把解集的左邊界往右縮)
在每次$B<0$時候嘗試找最小的max(就是把解集的右邊界往左縮)

最後我們處理結果
註意!由於結果為實數,我們需要對Min向上取整,對max向下取整
即$\lfloor max\rfloor$和 $\lceil min \rceil$


如果$min>max$ 很明顯無解

如果$(min<=0)and(0<=max)$也就是解集中包含0就可以不收稅也不補貼輸出$0$

否則如果$max<0$就是$min<=max<0$,那麽$|max|$便是交稅的最小金額

如果$max>=0$就是$0<min<=max$,那麽$min$便是補貼的最小金額

At Last

Q1: d為什麽開100000啊?
A1: 其實我也不知道——題目也沒給出來,只能看題解啦


Q2: 泥怎麽不用排序啊?
A2: 玄學。。。

Codes

Luogu P1023 稅收與補貼問題