税收与补贴问题(洛谷-P1023)
題目背景
每樣商品的價(jià)格越低,其銷量就會(huì)相應(yīng)增大?,F(xiàn)已知某種商品的成本及其在若干價(jià)位上的銷量(產(chǎn)品不會(huì)低于成本銷售),并假設(shè)相鄰價(jià)位間銷量的變化是線性的且在價(jià)格高于給定的最高價(jià)位后,銷量以某固定數(shù)值遞減。(我們假設(shè)價(jià)格及銷售量都是整數(shù))
對(duì)于某些特殊商品,不可能完全由市場(chǎng)去調(diào)節(jié)其價(jià)格。這時(shí)候就需要政府以稅收或補(bǔ)貼的方式來控制。(所謂稅收或補(bǔ)貼就是對(duì)于每個(gè)產(chǎn)品收取或給予生產(chǎn)廠家固定金額的貨幣)
題目描述
你是某家咨詢公司的項(xiàng)目經(jīng)理,現(xiàn)在你已經(jīng)知道政府對(duì)某種商品的預(yù)期價(jià)格,以及在各種價(jià)位上的銷售情況。要求你確定政府對(duì)此商品是應(yīng)收稅還是補(bǔ)貼的最少金額(也為整數(shù)),才能使商家在這樣一種政府預(yù)期的價(jià)格上,獲取相對(duì)其他價(jià)位上的最大總利潤(rùn)。
總利潤(rùn)=單位商品利潤(rùn)*銷量
單位商品利潤(rùn)=單位商品價(jià)格 - 單位商品成本 (- 稅金 or + 補(bǔ)貼)
輸入輸出格式
輸入格式:
輸入的第一行為政府對(duì)某種商品的預(yù)期價(jià),第二行有兩個(gè)整數(shù),第一個(gè)整數(shù)為商品成本,第二個(gè)整數(shù)為以成本價(jià)銷售時(shí)的銷售量,以下若干行每行都有兩個(gè)整數(shù),第一個(gè)為某價(jià)位時(shí)的單價(jià),第二個(gè)為此時(shí)的銷量,以一行-1,-1表示所有已知價(jià)位及對(duì)應(yīng)的銷量輸入完畢,輸入的最后一行為一個(gè)單獨(dú)的整數(shù)表示在已知的最高單價(jià)外每升高一塊錢將減少的銷量。
輸出格式:
輸出有兩種情況:若在政府預(yù)期價(jià)上能得到最大總利潤(rùn),則輸出一個(gè)單獨(dú)的整數(shù),數(shù)的正負(fù)表示是補(bǔ)貼還是收稅,數(shù)的大小表示補(bǔ)貼或收稅的金額最小值。若有多解,取絕對(duì)值最小的輸出。
如在政府預(yù)期價(jià)上不能得到最大總利潤(rùn),則輸出“NO SOLUTION”。
輸入輸出樣例
輸入樣例#1:
31
28 130
30 120
31 110
-1 ?-1
15
輸出樣例#1:
4
思路:本質(zhì)是一數(shù)學(xué)題,考慮預(yù)期價(jià)格前后的價(jià)格,如果預(yù)期收益大于或等于前后收益,即為所需解,如果找不到則輸出NO SOLUTION
源代碼
#include<iostream> #include<cstring> #include<cmath> using namespace std; struct node {int price;int sale; }a[10001];int main() {int n,m;int p=1,g=0;int cost,cost_sale;int i;cin>>n;cin>>cost>>cost_sale;while((cin>>a[p].price>>a[p].sale)&&(a[p].price!=-1)){if(a[p].price==n)//記錄預(yù)期價(jià)格{g=p;p++;}elsep++;}p--;cin>>m;int flag=p;flag++;if(a[p].price>n&&!g)//對(duì)于輸入中沒有預(yù)期價(jià)格,并且輸入價(jià)格比預(yù)期大很多的處理{int work=0;for(i=1;i<=p;i++){if(a[i].price<n){a[p].price=a[i].price;a[p].sale=a[i].sale;work++;}}if(!work){a[p].price=cost;a[p].sale=cost_sale;}}for(i=a[p].price+1;i<=10001;i++)//將可能的最大價(jià)格及其銷量處理{a[flag].price=i;a[flag].sale=a[p].sale-(m*(a[flag].price-a[p].price));flag++;}if(g==0)//尋找預(yù)期價(jià)格for(i=p;i<=10001;i++)if(a[i].price==n){g=i;break;}int h=0;int x,y,z;for(i=1;i<=10001;i++)//補(bǔ)貼{x=(a[g].price-cost+i)*a[g].sale;y=(a[g-1].price-cost+i)*a[g-1].sale;z=(a[g+1].price-cost+i)*a[g+1].sale;if(x>y&&x>z){cout<<i;h++;return 0;}}if(h==0)//稅收{(diào)for(i=1;i<=10001;i++){x=(a[g].price-cost-i)*a[g].sale;y=(a[g-1].price-cost-i)*a[g-1].sale;z=(a[g+1].price-cost-i)*a[g+1].sale;if(x>=y&&x>=z){cout<<"-"<<i;h++;return 0;}}}if(h==0)//沒有可行解cout<<"NO SOLUTION"<<endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的税收与补贴问题(洛谷-P1023)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 整型数据类型存储空间大小(信息学奥赛一本
- 下一篇: 信息学奥赛C++语言: 输出矩形