NOIP200002税收与补贴
试题描述
|
每样商品的价格越低,其销量就会相应增大。现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减,我们假设价格及销售量都是整数。对于某些涉及国民经济安全的特殊商品,不可能完全由市场去调节其价格,这时候就需要政府以税收或补贴的方式来控制。(所谓税收就是对于每个产品收取生产厂家固定金额的货币,所谓补贴就是对于每个商品给予生产厂家固定金额的货币) |
输入
|
第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本,第二个整数为以成本价销售时的销量售,以下若干行每行都有两个整数,第一个为某价位时的单价,第二个为此时的销量,以一行-1,-1表示所有已知价位及对应的销量输入完毕,输入的最后一行为一个单独的整数表示在已知的最高单价外每升高一块钱将减少的销量。
|
输出
|
有两种情况:若在政府预期价上能得到最大总利润,则输出一个单独的整数,数的正负表示是补贴还是收税,数的大小表示补贴或收税的金额最小值。若有多解,取绝对值最小的输出。如在政府预期价上不能得到最大总利润,则输出“NO SOLUTION”.
|
输入示例
|
31
28 130 30 120 31 110 -1 -1 15 |
输出示例
|
4
|
其他说明
|
提示:相邻价位间销量的变化是线性,为没有列出的价格提供了销量的计算方法,比如样例中可以推算出价格为 29 时的销量为125。
数据范围:给出的数据都不超过10000。 |
这。真。的。是。NOIP2000普及组。第一题?
纯数学题,将输入排序后,可发现收益是一个分段的二次函数。那么我们首先要让政府预期价在其所在的二次函数中成为对称轴才能保证政府预期价最高。然后根据确定的补贴计算其他二次函数的极值,判断是否大于政府预期价的收益。
公式什么的自己推吧!
#include<cstdio>
#include<cctype>
#include<queue>
#include<cstring>
#include<algorithm>
#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define ren for(int i=first[x];i!=-1;i=next[i])
using namespace std;
inline int read() {
int x=,f=;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-;
for(;isdigit(c);c=getchar()) x=x*+c-'';
return x*f;
}
const int maxn=;
struct Arr {
int x,y;
bool operator < (const Arr& ths) const {return x<ths.x;}
}A[maxn];
int n,expect,extra;
struct Solver {
double a,b,c;
}B[maxn];
int ans;
double maxv;
int main() {
expect=read();
int a,b;
while() {
a=read();b=read();
if(a<) break;
A[++n]=(Arr){a,b};
}
sort(A+,A+n+);A[n+].x=1e9;
extra=read();
rep(i,,n) {
double k,b;
if(i==n) k=(double)-extra;
else k=(double)(A[i+].y-A[i].y)/(A[i+].x-A[i].x);
b=A[i].y-k*A[i].x;
//printf("%.4lf %.4lf\n",k,b);
if(A[i].x<=expect&&expect<A[i+].x) {
ans=(int)A[].x-*expect-b/k+0.5;
maxv=(expect*k+b)*(expect-A[].x+ans);
}
}
rep(i,,n) {
double k,b;
if(i==n) k=(double)-extra;
else k=(double)(A[i+].y-A[i].y)/(A[i+].x-A[i].x);
b=A[i].y-k*A[i].x;
int mid=(int)(-A[].x*k+ans*k+b)/(-*k)+0.5;
if(mid>=A[i+].x) mid=A[i+].x;
if(mid<=A[i].x) mid=A[i].x;
double ret=(mid*k+b)*(mid-A[].x+ans);
//printf("%.5lf %.5lf %d %.5lf\n",k,b,mid,ret);
if(ret>maxv) {
puts("NO SOLUTION");
return ;
}
}
printf("%d\n",ans);
return ;
}
NOIP200002税收与补贴的更多相关文章
- Luogu 1023 - 税收与补贴问题 - [数学题]
题目链接:https://www.luogu.org/problemnew/show/P1023 题目背景每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低 ...
- 洛谷——P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)
洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...
- P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 洛谷P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- [NOIP2000] 提高组 洛谷P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- 洛谷 P1023 税收与补贴问题
P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...
- 【00NOIP普及组】税收与补贴问题(信息学奥赛一本通 1911)( 洛谷 1023)
[题目描述] 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给 定的最高价位后,销量以某固定 ...
- P1023 税收与补贴问题 (模拟)
题目链接 Solution 比较恶心的模拟题(主要是难看懂题意其实) 题意戳这里 然后根据一些简单的数学常识,可以知道这是一个二次函数. 所以我们每次枚举一个值,然后判定政府给出的价格是否是顶点即可. ...
随机推荐
- HDOJ 1075
字典树 9890974 2013-12-25 15:31:06 Accepted 1075 468MS 59832K 1342 B G++ 泽泽 #include<stdio.h> #in ...
- 【leetcode】Best Time to Buy and Sell Stock II
Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...
- 67. 总结篇:面试中随机数"等概率"vs"不等概率"生成问题[random generator with equal or unequal probability]
[本文链接] http://www.cnblogs.com/hellogiser/p/random-generator-with-equal-or-unequal-probability.html 1 ...
- frameset框架下,刷新整个页面
<a href="index.jsp" target="_parent"> index.jsp主frameset页面
- LightOJ 1247 Matrix Game (尼姆博弈)
A - Matrix Game Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submi ...
- 关于Java异常和错误的几个问题
1.Java中什么是Exception? 异常是Java传达给你的系统和程序错误的方式. 在java中,异常功能是通过实现比如Throwable,Exception,RuntimeException之 ...
- CI中写原生SQL(封装查询)
封装查询 封装,通过让系统为你组装各个查询语句,能够简化你的查询语法.参加下面的范例: $sql = "SELECT * FROM some_table WHERE id = ? AND s ...
- Java Hour 33 Weather ( 6 )
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 33 CURD 之 Create 首先是Eclipse 排序的功能找 ...
- C编译: 动态连接库 (.so文件)
转自:http://www.cnblogs.com/vamei/archive/2013/04/04/2998850.html 在“纸上谈兵: 算法与数据结构”中,我在每一篇都会有一个C程序,用于实现 ...
- mysql中char与varchar的区别分析(补充一句,int和integer没区别)
转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...