Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学
思路:列不等式组,然后解出不等式,得出答案的取值范围,最后取一个绝对值最小的答案就行了。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
const double eps=1e-8;
struct data
{
int sj;//存售价
int xl;//存销量
}s[110000];
int main()
{
int k=0,w=0,yqj=0,flag=-1;//flag用来记录预期值在数组中的位置
double low=-1e7,up=1e7;//记录答案的取值范围
scanf("%d%d%d",&yqj,&s[0].sj,&s[0].xl);
if(s[0].sj==yqj) flag=0;
for(;;)
{
int t1=0,t2=0;
scanf("%d%d",&t1,&t2);
if(t1==-1&&t2==-1) break;
int js=(s[k].xl-t2)/(t1-s[k].sj);
for(;;)//推导出输入中没给出的售价的销量
{
k++;
s[k].sj=s[k-1].sj+1;
s[k].xl=s[k-1].xl-js;
if(s[k].sj==yqj) flag=k;
if(s[k].sj==t1) break;
}
}
scanf("%d",&w);
for(;;)//将所有可以求出的售价的销量都推出来
{
if(s[k].xl-w<0) break;
k++;
s[k].sj=s[k-1].sj+1;
s[k].xl=s[k-1].xl-w;
if(s[k].sj==yqj) flag=k;
}
if(flag==-1)//如果所有已知的销量的售价中没有预期价,则无解
{
printf("NO SOLUTION");
return 0;
}
for(int i=0;i<=k;i++)//开始解不等式组
{
if(i==flag) continue;
double u=(s[flag].sj-s[0].sj)*s[flag].xl-(s[i].sj-s[0].sj)*s[i].xl;//解
double v=s[i].xl-s[flag].xl;
if(v<0) low=max(low,u/v);//记录
else up=min(up,u/v);
}
//输出答案
if(low>up) printf("NO SOLUTION");
else if(low>0)
if(fabs(low-(int)(low))<eps) printf("%d",int(low));
else printf("%d",int(low)+1);
else if(up<0)
if(fabs(up-(int)(up))<eps) printf("%d",int(up));
else printf("%d",int(up)-1);
else printf("0");
return 0;
}
Luogu P1023 [NOIp2000提高组]税收与补贴问题 | 数学的更多相关文章
- 洛谷-乘积最大-NOIP2000提高组复赛
题目描述 Description 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你 ...
- [NOIP2000] 提高组 洛谷P1019 单词接龙
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
- [NOIP2000] 提高组 洛谷P1018 乘积最大
题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...
- [NOIP2000] 提高组 洛谷P1017 进制转换
题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^ ...
- [NOIP2000] 提高组 洛谷P1023 税收与补贴问题
题目背景 每样商品的价格越低,其销量就会相应增大.现已知某种商品的成本及其在若干价位上的销量(产品不会低于成本销售),并假设相邻价位间销量的变化是线性的且在价格高于给定的最高价位后,销量以某固定数值递 ...
- Luogu P1314 [NOIP2011 提高组] 聪明的质监员
P1314 [NOIP2011 提高组] 聪明的质监员 题意 题目描述 给定\(n\)个物品,给定每个物品的 重量 \(w_i\) 和 价值 \(v_i\) 给定一个标准值 \(s\) 以及一个参数 ...
- HRBUST - 1214 NOIP2000提高组 方格取数(多线程dp)
方格取数 设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放人数字0.如下图所示(见样例 ,黄色和蓝色分别为两次走的路线,其中绿色的格子为黄色和蓝色共同走过的 ...
- NOIP2000提高组T1 进制转换
https://www.luogu.org/problem/P1017 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的值减1为指数,以10为底数的幂之和 ...
- luogu1022计算器的改良[noip2000提高组Day1 T1]
题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了一个刚进入的新手ZL先生. ...
随机推荐
- 1.26学习总结——css盒子模型
CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的H ...
- 使用 VSCode 开发调试 STM32 单片机尝试
使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...
- php--laravel --debug--mac
1>安装debug 一.下载xdebug文件 1.将phpinfo();的信息全部输入网址中的框,得到适配的xdebug版本: 网址:http://xdebug.org/wizard.php 2 ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- java 163邮箱验证
第一步:引入工具类 import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; i ...
- js原型和原型链理解 constructor 构造函数
一.对象:普通对象 函数对象 二.构造函数特点:1.需要new实例化,内部使用this对象指向即将要生成的实例对象 2.首字母大写,用于区分普通函数 function Person(name){ ...
- 最详细的搭建web自动化测试网站,别再说你没有实战项目(文未有福利)
一步步教你搭建开源网站 环境准备: Tomcat shopping商城文件 jdk环境 Mysql环境 解压shopping.rar拷贝至tomcat/webapps 在navicat导入数据库db_ ...
- mybatis plus 一对多,多表联查的使用小记
阅读本博文需要有基础的mybatis以及mybatis plus知识,如果没有建议您了解相关的内容 本项目使用的是springboot构建的,数据库字段命名不严谨仅做演示测试使用,本文不做相关源码的解 ...
- .NET跨平台实践:.NetCore、.Net5/6 Linux守护进程设计
之前,我写过两篇关于用C#开发Linux守护进程的技术文章,分别是<.NET跨平台实践:用C#开发Linux守护进程>和<.NET跨平台实践:再谈用C#开发Linux守护进程 - 完 ...
- Linux安装配置Java
先从 Oracle 官网下载 Java 运行 tar -zxvf xxxx.tar.gz 指令将 Java 解压到 /usr/local/java 下(个人习惯,无所谓) 修改环境变量 vim /et ...