试题描述

每样商品的价格越低,其销量就会相应增大。现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递减,我们假设价格及销售量都是整数。对于某些涉及国民经济安全的特殊商品,不可能完全由市场去调节其价格,这时候就需要政府以税收或补贴的方式来控制。(所谓税收就是对于每个产品收取生产厂家固定金额的货币,所谓补贴就是对于每个商品给予生产厂家固定金额的货币)
    假如你是政府的一名智囊,现在你已经知道政府对某种商品的预期价格,以及在各种价位上的销售情况。要求你确定政府对此商品是应收税还是补贴的最少金额(也为整数),才能使商家在这样一种政府预期的价格上,获取相对其他价位上的最大总利润。
    说明:总利润 = 单位商品利润 * 销量 
          单位商品利润 = 单位商品价格 – 单位商品成本 (– 税金  or  + 补贴)

输入
第一行为政府对某种商品的预期价,第二行有两个整数,第一个整数为商品成本,第二个整数为以成本价销售时的销量售,以下若干行每行都有两个整数,第一个为某价位时的单价,第二个为此时的销量,以一行-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税收与补贴的更多相关文章

  1. Luogu 1023 - 税收与补贴问题 - [数学题]

    题目链接:https://www.luogu.org/problemnew/show/P1023 题目背景每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低 ...

  2. 洛谷——P1023 税收与补贴问题

    P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...

  3. 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)

    洛谷 P1023 税收与补贴问题 (2000NOIP提高组) 题意分析 一开始没理解题意.啰啰嗦嗦一大堆.看了别人的题解才明白啥意思. 对于样例来说,简而言之: 首先可以根据题目推算出来 28 130 ...

  4. P1023 税收与补贴问题

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

  5. 洛谷P1023 税收与补贴问题

    P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...

  6. [NOIP2000] 提高组 洛谷P1023 税收与补贴问题

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

  7. 洛谷 P1023 税收与补贴问题

    P1023 税收与补贴问题 题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最 ...

  8. 【00NOIP普及组】税收与补贴问题(信息学奥赛一本通 1911)( 洛谷 1023)

    [题目描述] 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给 定的最高价位后,销量以某固定 ...

  9. P1023 税收与补贴问题 (模拟)

    题目链接 Solution 比较恶心的模拟题(主要是难看懂题意其实) 题意戳这里 然后根据一些简单的数学常识,可以知道这是一个二次函数. 所以我们每次枚举一个值,然后判定政府给出的价格是否是顶点即可. ...

随机推荐

  1. Largest Divisible Subset

    Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of ...

  2. phpmyadmin 主机名自动补全

    2015年2月9日 14:29:25 新安装的phpmyadmin在登录界面中, 主机名的输入框没有自动补全功能, 导致每次都得手动输入ip地址 找到 phpmyadmin/libraries/aut ...

  3. Java数据类型中String、Integer、int相互间的转换

    1.Integer转换成int的方法 Integer i;  int k = i.intValue(); 即Integer.intValue(); 2.int转换成Integer int i; Int ...

  4. java获取tomcat路径

    获取tomcat路径 String savePath3 = System.getProperty("catalina.home"); E:\apache-tomcat-7.0.63 ...

  5. Android 判断app是否在前台运行

    <!-- 前台还是后台 --> <uses-permission android:name="android.permission.GET_TASKS" /> ...

  6. 大端(big endian)和小端(little endian)

    http://www.cnblogs.com/Romi/archive/2012/01/10/2318551.html 当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的 ...

  7. CentOS下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决

    我用的是hadoop 1.2.1 遇到的问题是: hadoop中datanode无法启动,报Caused by: java.net.NoRouteToHostException: No route t ...

  8. angularjs教程

    http://www.runoob.com/angularjs/angularjs-routing.htmlA

  9. Android Dev Guides

    Android Dev Guides Google Java编程风格指南中文版 英文地址:http://google-styleguide.googlecode.com/svn/trunk/javag ...

  10. OpenStack Swift集群部署流程与简单使用

    之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Sw ...