Luogu 1023 - 税收与补贴问题 - [数学题]
题目链接:https://www.luogu.org/problemnew/show/P1023
题目背景
每样商品的价格越低,其销量就会相应增大。现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减。(我们假设价格及销售量都是整数)
对于某些特殊商品,不可能完全由市场去调节其价格。这时候就需要政府以税收或补贴的方式来控制。(所谓税收或补贴就是对于每个产品收取或给予生产厂家固定金额的货币)
题目描述
你是某家咨询公司的项目经理,现在你已经知道政府对某种商品的预期价格,以及在各种价位上的销售情况。要求你确定政府对此商品是应收税还是补贴的最少金额(也为整数),才能使商家在这样一种政府预期的价格上,获取相对其他价位上的最大总利润。
总利润 = 单位商品利润 $\times$ 销量
单位商品利润 = 单位商品价格 - 单位商品成本 (- 税金 or + 补贴)
输入输出格式
输入格式:
输入的第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本,第二个整数为以成本价销售时的销售量,以下若干行每行都有两个整数,第一个为某价位时的单价,第二个为此时的销量,以一行 $-1,-1$ 表示所有已知价位及对应的销量输入完毕,输入的最后一行为一个单独的整数表示在已知的最高单价外每升高一块钱将减少的销量。
输出格式:
输出有两种情况:若在政府预期价上能得到最大总利润,则输出一个单独的整数,数的正负表示是补贴还是收税,数的大小表示补贴或收税的金额最小值。若有多解,取绝对值最小的输出。
如在政府预期价上不能得到最大总利润,则输出“NO SOLUTION”。
输入输出样例
输入样例#1:
31
28 130
30 120
31 110
-1 -1
15
输出样例#1:
4
说明
所有数字均小于100000
题解:
首先,不妨计算出从“成本价”到“销量为零的价格”,所有整数单价以及其对应的销量。
设成本价为 $p$,目标售价为 $T_{价格}$ 及其对应销量为 $T_{销量}$,所有可能的售价为 $P_{价格}$ 及其对应销量为 $P_{销量}$,假设补贴(税收)为 $x$,则有:
$(T_{价格}-p+x)T_{销量} \ge (P_{价格}-p+x)P_{销量}$
化为:
$x(T_{销量} - P_{销量}) \ge (P_{价格}-p)P_{销量} - (T_{价格}-p)T_{销量}$
因此,当 $T_{销量} - P_{销量} > 0 $ 时,为 $x \ge [(P_{价格}-p)P_{销量} - (T_{价格}-p)T_{销量}] / (T_{销量} - P_{销量})$;
当 $T_{销量} - P_{销量} < 0 $ 时,为 $x \le [(P_{价格}-p)P_{销量} - (T_{价格}-p)T_{销量}] / (T_{销量} - P_{销量})$;
这样一来,所有的不等式联立起来,就对 $x$ 有一个区间限定 $[L,R]$,根据这个区间限定选择输出答案即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,double> P;
const double eps=1e-; vector<P> v;
P t;
int lst,d; inline bool equ(double a,double b) {
return fabs(a-b)<eps;
} int main()
{
cin>>t.first; t.second=; P tmp;
while(cin>>tmp.first>>tmp.second)
{
if(tmp.first==- && tmp.second==-) break;
v.push_back(tmp);
}
sort(v.begin(),v.end());
lst=v[].first;
for(int i=,j=,sz=v.size(); j<sz; i++,j++)
{
double a=(v[i].second-v[j].second)/(v[i].first-v[j].first);
double b=v[i].second-v[i].first*a;
for(int x=v[i].first+;x<v[j].first;x++) v.push_back(make_pair(x,a*x+b));
}
sort(v.begin(),v.end());
cin>>d;
while()
{
P last=v.back();
if(last.second-d>) v.push_back(make_pair(last.first+,last.second-d));
else break;
} //for(auto x:v) printf("%d %f\n",x.first,x.second); int pos=lower_bound(v.begin(),v.end(),t)-v.begin(); t=v[pos];
//printf("%d %f\n",t.first,t.second); double L=-1e11,R=1e11;
for(auto p:v)
{
if(p==t) continue;
if(t.second>p.second) {
L=max(L,((p.first-lst)*p.second-(t.first-lst)*t.second)/(t.second-p.second));
}
if(t.second<p.second) {
R=min(R,((p.first-lst)*p.second-(t.first-lst)*t.second)/(t.second-p.second));
}
}
//printf("%f %f\n",L,R); if(L>R) printf("NO SOLUTION\n");
else if(L>) printf("%.0f\n",ceil(L));
else if(R<) printf("%.0f\n",floor(R));
else printf("0\n");
}
Luogu 1023 - 税收与补贴问题 - [数学题]的更多相关文章
- 【00NOIP普及组】税收与补贴问题(信息学奥赛一本通 1911)( 洛谷 1023)
[题目描述] 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给 定的最高价位后,销量以某固定 ...
- NOIP200002税收与补贴
试题描述 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 洛谷——P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...
- P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 洛谷P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- [NOIP2000] 提高组 洛谷P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 洛谷 P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学
题目链接 思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了. #include<iostream> #include<cstdio> #i ...
随机推荐
- sql 有条件计数
select InstitutionID=LEFT(InstitutionID,9), Irregularities_Type=sum(CASE WHEN Irregularities_Type> ...
- 使用 GeoIP2 获取 IP 的地理位置
1. 准备工作 数据库 : 解析 IP 地理位置的的数据库来自 GeoLite2 开源数据库:https://dev.maxmind.com/geoip/geoip2/geolite2/ . C 语言 ...
- ElasticSearch 5.0及head插件安装
一.elasticsearch安装配置 1.官网下载源码包 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0 ...
- sudo: unable to execute ./script.sh: no such file or directory
I just had this exact problem, it turned out to be a text file encoding problem. For me to fix it wh ...
- Fluent动网格【10】:区域运动案例
本案例主要描述如何在Fluent中处理包含了公转和自转的复合运动.涉及到的内容包括: 多区域模型创建 滑移网格设置 区域运动UDF宏DEFINE_ZONE_MOTION 案例描述 案例几何如图所示. ...
- css世界的学习笔记
1.+选择器div+p:选择紧接在div后的所有p元素: 2.导航的样式:(注意:不给a设置width:100%;只是需要display:block;利用流布居:) <h4>无宽度,借助流 ...
- 【iCore4 双核心板_ARM】例程三十五:HTTP_IAP_ARM实验——更新升级STM32
实验现象: 核心代码: int main(void) { led.initialize(); //LED³õʼ»¯ key.initialize(); if(ARM_KEY_STATE == KEY ...
- RChain的跨分片交易算法
跨分片交易是一个难题,但是遗憾的是业界已经有一个项目RChain解决了这个问题. 分片方式有很多种,最难的是状态分片,什么是状态分片呢?把以太坊比作银行的话,状态指的是银行账户的当前余额.那状态分片就 ...
- page load时执行JavaScript
// Multiple onload function created by: Simon Willison // http://simonwillison.net/2004/May/26/addLo ...
- MFMailComposeViewController发送邮件的实例
本文转载至 http://blog.csdn.net/liufeng520/article/details/7585140 iPhone API已经提供了系统写邮件界面的接口,使用MFMailCo ...