1023税收与补贴问题

题意:2000Noip提高组

分析:这题没有理解好题意,最后看了题解之后才做出来的,下面贴一下刘汝佳大神的题解

我先来说说题目的意思。就从样例开始分析。

输入是:

31 28 130 30 120 31 110 -1 -1 15

意思就是政府预期价是31元。成本28元,按成本销售的时候可以买130件产品。

每个卖30元的时候可以卖120个,

每个卖31元(输入的最高价位)的时候可以卖110个,

每个卖32元的时候可以卖:110-15=95个。

每个卖33元的时候可以卖:110-15-15=80个。

每个卖34元的时候可以卖:110-15-15-15=65个。

... 因为“相邻价位之间的销量变化是均匀的”,因此28元卖130个,30元卖120个就可以知道

29元卖125个(平均每元减少的销量是(130-120) div (30-28)=5)

输出是4,我们来解释一下为什么是4。

4代表补贴是4元,所以:

在卖28元的时候,总利润是:(28-28+4)*130=520元,

在卖29元的时候,总利润是:(29-28+4)*125=625元,

在卖30元的时候,总利润是:(30-28+4)*120=720元,

在卖31元的时候,总利润是:(31-28+4)*110=770元,

在卖32元的时候,总利润是:(32-28+4)*95=760元,

... 在卖38元的时候,总利润是:(38-28+4)*5=70元,

显然可能的价位就是28~38了。(不能低于成本,卖39的时候销售量就是负数了)

可以看出,现在卖31元最划算,所以人们都愿意卖31元,这样一来不就达到政府的目的了吗!!

而当补贴是0,1,2,3的时候卖31元并不是最划算的,政府的目的达不到,你当然就没有分啦!

题意清楚了吗?好,下面分析思路。

穷举显然可以,但是没有什么意思,留给大家自己写。下面讲我的另外一种算法,数学味道要浓一些,

希望大家坚持看完。

由于需要N元钱最划算,相当于使N元钱的利润大于等于每种价格的利润。因此可以分别考虑。

设补贴为x,则N元钱的利润是:(p为成本)

(N-p+x)*d[N]=(N-p)*d[N]+x*d[N]

因此N元钱比M元钱划算的时候有:

(N-p)*d[N]+x*d[N]>=(M-p)*d[M]+x*d[M],即:

x(d[N]-d[M])>=M*d[M]-N*d[N]-p*(d[M]-d[N])

这样,要使N元钱比M元钱划算,x必须在区间[k1,k2] (k1,k2根据上面的式子得出)

例如上面的例子:

31元比28元划算时有:

(31-28+x)*110>=(28-28+x)*130

即:330+110x>=130x,故x<=16.5

31元比30元划算时有:

330+110x>=240+120x,故x<=9

31元比32元划算时有:

330+110x>=380+95x,故x>=3.33

... 最后所有式子取交集,就得到了x的范围。要求绝对值最小值还不容易吗? :-P

大家注意我在求出了k1,k2后做的最后的处理。可能有一边或两边无界的情况。

正数和负数的处理也有区别。

有一点需要注意:题目没有说输入价位是从小到大排序好的,虽然测试数据都是排序好的。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <string>
 5 #include <vector>
 6 #include <algorithm>
 7 #include <set>
 8 #include <map>
 9 #include <bitset>
10 #include <cmath>
11 #include <queue>
12 #include <stack>
13 using namespace std;
14 const int maxn=10010;
15 const int INF=1<<30;
16 int price[maxn],sell[maxn],d[maxn];   //价格和销量
17 int n,p;  //达到最大利润的售价和成本
18 int num; //达到最大利润之后的减少量
19 int main()
20 {
21     while(cin>>n)
22     {
23         int k=0;
24         while(true){   //已知的售价和销量
25             int x,y;
26             cin>>x>>y;
27             if(x==-1&&y==-1)  break;
28             ++k;
29             price[k]=x;
30             sell[k]=y;
31         }
32         cin>>num;
33
34         int p=price[1];  //成本
35         int most=price[k]+sell[k]/num; //最高售价
36         if((n<p)||(n>most)){
37             cout<<"NO SOLUtION"<<endl;
38             continue;
39         }
40         memset(d,0,sizeof(d));
41
42         //处理销量
43         for(int i=1;i<=k-1;i++){
44             int tt=(sell[i]-sell[i+1])/(price[i+1]-price[i]);
45             for(int j=price[i];j<=price[i+1]-1;j++)
46                 d[j]=sell[i]-tt*(j-price[i]);
47         }
48         for(int i=price[k];i<=most;i++)
49             d[i]=sell[k]-num*(i-price[k]);
50
51         //cout<<"456"<<endl;
52         double k1=-INF,k2=INF;
53         for(int i=p;i<=most;i++){
54             int r=d[n]-d[i];
55             int ans=i*d[i]-n*d[n]-p*(d[i]-d[n]);
56             if(r>0&&k1<(double)ans/(double)r)
57                 k1=(double)ans/(double)r;
58             if(r<0&&k2>(double)ans/(double)r)
59                 k2=(double)ans/(double)r;
60         }
61
62         int u1,u2;
63         if(k1==-INF)   u1=-INF;
64         else if(k1>0&&(k1-(int)k1>0))  u1=(int)k1+1;
65         else  u1=k1;
66         if(k2==INF)   u2=INF;
67         else if(k2<0&&((int)k2-k2>0))  u2=(int)k2-1;
68         else u2=k2;
69
70         if(u1<0&&u2>0){
71             u1=0,u2=0;
72         }
73         if(u1>u2)  cout<<"NO SOLUTION"<<endl;
74         else if(abs(u1)<abs(u2))  cout<<u1<<endl;
75         else  cout<<u2<<endl;
76     }
77     return 0;
78 }

时间: 2024-08-13 17:03:36

1023税收与补贴问题的相关文章

NOIP200002税收与补贴

试题描述 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减,我们假设价格及销售量都是整数.对于某些涉及国民经济安全的特殊商品,不可能完全由市场去调节其价格,这时候就需要政府以税收或补贴的方式来控制.(所谓税收就是对于每个产品收取生产厂家固定金额的货币,所谓补贴就是对于每个商品给予生产厂家固定金额的货币)    假如你是政府的一名智囊,现在你已经知道政府对

Luogu P1023 税收与补贴问题

P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减.(我们假设价格及销售量都是整数) 对于某些特殊商品,不可能完全由市场去调节其价格.这时候就需要政府以税收或补贴的方式来控制.(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币) 题目描述 你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格

[NOIP2000] 提高组 洛谷P1023 税收与补贴问题

题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减.(我们假设价格及销售量都是整数) 对于某些特殊商品,不可能完全由市场去调节其价格.这时候就需要政府以税收或补贴的方式来控制.(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币) 题目描述 你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格,以及在各种价位上的销售情况

洛谷——P1023 税收与补贴问题

P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减.(我们假设价格及销售量都是整数) 对于某些特殊商品,不可能完全由市场去调节其价格.这时候就需要政府以税收或补贴的方式来控制.(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币) 题目描述 你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格

P1023 税收与补贴问题

P1023 税收与补贴问题 题解 对于这道题目其实只关乎3个价位的利润: expect-1     expect     expect+1 一旦利润: expect-1  ≤ expect  ≥  expect+1 那么在这种情况下的税收和补贴就可以实现要求 (题目不是说: 这样一开始按这样算的:利润: expect-1  <  expect  >  expect+1 但是最后一个测试点并不允许我这样QWQ,是我理解问题还是数据的锅QWQ 如果是严格相对最大,呐就是题目的锅了 可能题目不要求严

中秋练习题

高高兴兴过中秋,快快乐乐写作业 总结: T1 恶心的枚举 T2 字符串处理 T3 回溯 1.P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减.(我们假设价格及销售量都是整数) 对于某些特殊商品,不可能完全由市场去调节其价格.这时候就需要政府以税收或补贴的方式来控制.(所谓税收或补贴就是对于每个产品收取或给予生产厂家固

美国靠什么来诱惑富士康投资建厂?

据相关媒体报道,中国电子代工巨头富士康集团,正筹备在美国建立制造基地,同其他企业登陆美利坚遭到严格审核和粗暴拒绝的情况不同,富士康的莅临几乎引起骚动,美国各州因争取"富士康项目"而打得头破血流.之所以会出现这种情况,正在于劳动密集型企业强大的用工需求,而创造就业恰恰是特朗普政府最重要.最严肃的课题.在这样的背景下,老谋深算的郭台铭自然会在项目落地前,提出琳琅满目的要求,比如场地.税收.补贴,还有最关键的技术工招募和培养等等.显然,双方之间还要博弈很多回合以达到最佳的平衡点,甚至会出现美

专访飞澳韦灵臣:用智能彻底摆平停车难

在北京.上海等一线城市,很多人会有这么一种感觉,出个门开车光堵车不说,最让人不爽快的是好不容易到了目的的之后,却找不到停车位.而今天,停车难正在从北京.上海等一线城市向二三四线城市快速蔓延,“停车难”已经成为了一个严重的社会问题.欲治其根,必先知其本,我们就先来看看是什么原因造成了今天的“停车难”. 其一,目前中国的汽车总量已经非常多,不仅仅城市中汽车越来越多,就连广大的农村地区汽车也在明显增加.来自公安部交管局的数据显示,截至2014年年底,我国机动车保有量达2.64亿辆,其中汽车1.54亿辆

4星|《认识经济》:全面系统的经济学普及读物,鸿篇巨制,价格超贵

认识经济 全面系统的经济学普及读物.内容包括微观经济学和宏观经济学,分章节介绍经济学的专题,比如市场,消费,需求弹性,竞争,垄断,税收,贸易,GDP,货币,金融市场,汇率等. 全书篇幅较长,对经济学的各种话题的解说比较详细.有案例,有公式,有图表,有数据.公式不多,仅限于简单的加减乘除.不少章节反复给出各种推演数字,有点像是做练习题.总体风格可以算通俗易懂. 两位作者是美国经济学教授,可以认为本书内容是学术界的共识.没看出来跟奥地利经济学派作者们的书比如<经济学的思维方式><薛兆丰经济学