【题目描述】

每样商品的价格越低,其销量就会相应增大。现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给 定的最高价位后,销量以某固定数值递减。(我们假设价格及销售量都是整数)

对于某些特殊商品,不可能完全由市场去调节其价格。这时候就需要政府以税收或补贴的方式来控制。(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币)

问题求解:

你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格,以及在各 种价位上的销售情况。要求你确定政府对此商品是应收税还是补贴的最少金额(也为整数),才能使商家在这样一种政府预期的价格上,获取相对其他价位上的最大总利润。

总利润=单位商品利润*销量

单位商品利润=单位商品价格-单位商品成本(-税金 or +补贴)

【输入】

输入的第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本, 第二个整数为以成本价销售时的销售量,以下若干行每行都有两个整数,第一个为某价位时 的单价,第二个为此时的销量,以一行-1,-1表示所有已知价位及对应的销量输入完毕,输入的最后一行为一个单独的整数表示在已知的最高单价外每升高一块钱将减少的销量。

【输出】

输出有两种情况:若在政府预期价上能得到最大总利润,则输出一个单独的整数,数的正负表示是补贴还是收税,数的大小表示补贴或收税的金额最小值。若有多解,取绝对值最小的输出。如在政府预期价上不能得到最大总利润,则输出“NO SOLUTION”

【输入样例】

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

【输出样例】

4


首先,这题的本质是一个数学题,其思想为设一个未知数x,然后列为无数个的不等式,所有不等式都要求使政府预算的那个价格的总利润大于其他价格的总利润,这样便可以解出x的范围,min<=x<=max,然后根据min和max的正负号来决定输出哪个。

以样例为例,我们要求

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

(31-28+x)*110>=(29-28+x)*125

(31-28+x)*110>=(30-28+x)*120

(31-28+x)*110>=(32-28+x)*95

 #include<bits/stdc++.h>
using namespace std;
int price[],num[];
int main()
{
int pre,x,y;cin>>pre;
cin>>price[]>>num[];
int m=,jian;
double umax=1e9,umin=-1e9;//注意这边是double类型,一开始定义错了还查了很久
while(cin>>x>>y&&(x!=-||y!=-))
{
if(x-price[m]==)
{
price[++m]=x;
num[m]=y;
}
else
{
int kxy=-(num[m]-y)/(x-price[m]);//kxy为中间每差1元减少的销量
while(price[m]<x)
{
price[++m]=price[m-]+;
num[m]=num[m-]+kxy;
}
}
}
cin>>jian;
int tmpn=num[m],tmpp=price[m],k=;
while(tmpn-jian>)
{
++m;++tmpp;
price[m]=tmpp;
tmpn-=jian;
num[m]=tmpn;
}
for(int i=;i<=m;i++)
if(price[i]==pre)
{
k=i;
break;
}
if(k==)
{
cout<<"NO SOLUTION";
return ;
}
for(int i=;i<k;i++)
if((double)((num[k]*(price[k]-price[])-num[i]*(price[i]-price[]))/(double)(num[i]-num[k]))<=umax)
umax=(double)(num[k]*(price[k]-price[])-num[i]*(price[i]-price[]))/(double)(num[i]-num[k]);
//(预估价的总利润-某价位上的总利润)/(某价位销量-预估价销量)=应该收的RMB
//这个地方不理解的话建议解一下上文列出的不等式
for(int i=k+;i<=m;i++)
if((double)((num[i]*(price[i]-price[])-num[k]*(price[k]-price[]))/(double)(num[k]-num[i]))>=umin)
umin=(double)(num[i]*(price[i]-price[])-num[k]*(price[k]-price[]))/(double)(num[k]-num[i]);
//(某价位上的总利润-预估价的总利润)/(预估价销量-某价位销量)=应该补贴的RMB
if(umax<umin)cout<<"NO SOLUTION";//解集为空
else if(umax<)printf("%.0f",floor(umax));//需要补贴的情况
else if(umin>)printf("%.0f",ceil(umin));//需要收税的情况
else cout<<"";//若不需要补贴或收税
return ;
}

//参考:洛谷 P1023 税收与补贴问题 - sdfzrlt的博客 - CSDN博客
https://blog.csdn.net/rlt1296/article/details/52788630
P1023 税收与补贴问题 题解
https://www.luogu.org/problemnew/solution/P1023

【00NOIP普及组】税收与补贴问题(信息学奥赛一本通 1911)( 洛谷 1023)的更多相关文章

  1. 【18NOIP普及组】对称二叉树(信息学奥赛一本通 1981)(洛谷 5018)

    [题目描述] 一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树: 1.二叉树: 2.将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等. 下图中节点内的数字为权值,节点外 ...

  2. 【13NOIP提高组】转圈游戏(信息学奥赛一本通 1875)(洛谷 1965)

    题目描述 nn 个小描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号 ...

  3. 【11NOIP提高组】选择客栈(信息学奥赛一本通 1546)(洛谷 1311)

    题目描述 丽江河边有nn家很有特色的客栈,客栈按照其位置顺序从 11到nn编号.每家客栈都按照某一种色调进行装饰(总共 kk 种,用整数 00 ~k-1k−1 表示),且每家客栈都设有一家咖啡店,每家 ...

  4. $ybt\ 【信息学奥赛一本通】题解目录$

    [信息学奥赛一本通]题解目录 $ \large -> OJ$ $ problem1000 $ \(Answer\) - > $ \large 1000$ $ problem1001 $ \ ...

  5. 【00NOIP普及组】计算器的改良(信息学奥赛一本通 1910)(洛谷 1022)

    [题目描述] NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先 ...

  6. 【03NOIP普及组】栈(信息学奥赛一本通 1924)(洛谷 1044)

    #include<bits/stdc++.h> using namespace std; int n,ans,m,k,ans2; ],f[],d[][],num[][],tmp[],s[] ...

  7. 「SDOI2014」旅行(信息学奥赛一本通 1564)(洛谷 3313)

    题目描述 S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天面条神教.隐形独角兽教.绝地教都是常见的信仰. 为了方便,我 ...

  8. Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学

    题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...

  9. 【04NOIP普及组】火星人(信息学奥赛一本通 1929)(洛谷 1088)

    [题目描述] 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类 ...

随机推荐

  1. 3.将模型添加到 ASP.NET Core MVC 应用

    添加数据模型类 右键单击 Models 文件夹,然后单击“添加” > “类”. 将类命名“Movie”.向 Movie 类添加以下属性: using System;using System.Co ...

  2. Win10家庭版升级到企业版的方法

    一.家庭版升级企业版 1.右键单击[此电脑]——>属性 2.点击更改产品密钥 3.输入密钥:NPPR9-FWDCX-D2C8J-H872K-2YT43 4.点击下一步,验证结束后点击开始升级,然 ...

  3. igel udc2 config

    igel udc2 config 系统安装盘下载地址 http://www.myigel.biz/?forcedownload /config/bin/igelone_config #!/bin/sh ...

  4. ImportError: cannot import name Namespace

    运行socketServer报错. 解决: pip uninstall python-socketio pip install python-socketio

  5. Linux系统:保证数据安全落盘

    在很多IO场景中,我们经常需要确保数据已经安全的写到磁盘上,以便在系统宕机重启之后还能读到这些数据.但是我们都知道,linux系统的IO路径还是很复杂的,分为很多层,每一层都可能会有buffer来加速 ...

  6. aria2 ssl

    https://github.com/q3aql/aria2-static-builds https://github.com/aria2/aria2/issues/781

  7. chrome浏览页面常用快捷键

    1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...

  8. select_region_point和select_region_spatial

    一.select_region_point select_region_point(Regions:DestRegions:row,column:) 算子含义:选择包含给定像素的所有区域. Regio ...

  9. 笔谈kxmovie开源播放器库的使用

    开源播放器项目 kxmovie(https://github.com/kolyvan/kxmovie),现在仍然是很多刚开始接触播放器开发的程序员的参照范本.以下是我操作kxmovie项目的过程: ( ...

  10. map put相同的key

    Map添加相同的key 2018年09月09日 10:37:12 Airport_Le 阅读数:6479   HashMap是的key是不能重复的,如果有相同的key,最后一个key对应的value会 ...