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 ...
随机推荐
- Guava-Objects使用
前言 Java中的Object提供了很多方法供所有的类使用,特别是toString.hashCode.equals.getClass等方法,在日常开发中作用很大,Guava中包含Objects类,其提 ...
- 小程序学习笔记三:页面文件详解之视图层WXML、WXS、WXSS文件
视图层:Pages主要有 wxml页面文件和模板文件.wxs脚本文件.wxss样式文件:component是抽取出来的业务单元,同样拥有wxml页面文件和模板文件.wxs脚本文件.wxss样式文件 ...
- SQL DCL 数据控制语句
前言 DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包 ...
- 生产环境CPU过高问题定位
问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 解决过程: 1.根据top命令,发现 ...
- 浅谈 CSS 预处理器: 为什么要使用预处理器?
CSS 自诞生以来,基本语法和核心机制一直没有本质上的变化,它的发展几乎全是表现力层面上的提升.最开始 CSS 在网页中的作用只是辅助性的装饰,轻便易学是最大的需求:然而如今网站的复杂度已经不可同日而 ...
- Android 手机版 ssr
看上去比windows客户端多了很多选项,但实际上只需要设置这五个: 链接:https://pan.baidu.com/s/1PKL0ViJJRJw9zkG8AlvEdQ 提取码:p175 操作步骤: ...
- Delphi XE以后的版本 程序如何瘦身
第一步:关闭debug infomation. 打开工程后,依次点击project--option--delphi compiler--linking 将右边Debug information改为Fa ...
- IndexedDB 教程
IndexedDB 教程 IndexedDB 是一个基于 JavaScript 的面向对象的事务型数据库.有了 LocalStorage 和 Cookies,为什么还要推出 indexedDB 呢?其 ...
- Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK - Android
在Windows7上运行 “cordova build android” 报错,如下: C:\test\hello> cordova build android ANDROID_HOME=C:\ ...
- python 获取本机的IP
python 获取本地的IP import socket import fcntl import struct def get_ip_address(ifname): s = socket.socke ...