【题目描述】

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

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

问题求解:

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

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

单位商品利润=单位商品价格-单位商品成本(-税金 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. spring boot 规范json返回值

    spring boot 规范json返回值 spring boot 接口返回配置 @ResponseBody ,则返回自定义的对象,解析成json. 但是,部分字段能友好的展示出来.如 Date,Lo ...

  2. requirejs:模块加载(require)及定义(define)时的路径理解

    给新来的实习生普及下JS基本知识,看到比较好的文章 转载https://blog.csdn.net/xuxiaoping1989/article/details/52384778 接触过require ...

  3. Html-元素类型笔记

    注意点: 元素类型分为 块级元素 和 行内元素 块级元素: 在网页中以块的形式显示,默认情况都会占据一行,两个相邻的块级元素不会出现并列显示的元素,按照顺序自上而下排列. 块级元素可以定义自己的宽度和 ...

  4. MySQL Replication--事务组提交和多线程复制

    事务组提交和多线程复制 在MySQL 5.7版本引入基于LOGICAL_CLOCK的多线程复制,依赖于BINLOG事件中的last_committed属性,该last_committed属性是否与事务 ...

  5. Activity知识点详解

    Activity知识点详解 一.什么是Activity 官方解释: The Activity class is a crucial component of an Android app, and t ...

  6. Python并发编程-concurrent包

    Python并发编程-concurrent包 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.concurrent.futures包概述 3.2版本引入的模块. 异步并行任务编程 ...

  7. php图片防盗链

    利用.htaccess 重写规则防止图片被盗链 2. 找到httpd.conf 打开重写规则 3.

  8. node基础学习——http基础知识-02-http响应数据流

    <一> 发送服务器端响应流 在createServer()方法的参数值回调函数或服务器对象的request事件函数中的第二个参数值为一个http.ServerResponse对象,可以利用 ...

  9. Welcome to GnuPG 2.2

    Welcome to GnuPG 2.2 Installation Instructions Double click the Install package to install GnuPG 2.2 ...

  10. 软帝学院教你java命名规范法则

    java命名规范法则大全 在我们在刚开始学习java的时候,给包.类.方法等命名的时候总是取名不规范,大多都是随便取的,对于一个专业的程序员来说.命名规范化也是必不可少的.命名规范的话能够在编码过程中 ...