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先生. ...
随机推荐
- PTA 面向对象程序设计 6-2 逆序字符串
6-2 逆序字符串 设计一个void类型的函数reverse_string,其功能是将一个给定的字符串逆序.例如,给定字符串为"hello",逆序后为"olleh&quo ...
- Java定时任务Quartz
第一步:pom文件中添加依赖包 第二步:创建xml文件,名称为:spring-scheduler 路径如下图: 第三步:spring-scheduler配置详情 <!--创建任务--> & ...
- php stream 流封装协议
http://php.net/manual/wrappers.php 过程: 1. 开始通信 2. 读取数据 3. 写入数据 4. 结束通信 usage: * 读写文件系统 <?php $han ...
- springBoot 基础入门
来处:是spring项目中的一个子项目 优点 (被称为搭建项目的脚手架) 减少一切xml配置,做到开箱即用,快速上手,专注于业务而非配置 从创建项目上: -- 快速创建独立运 ...
- whistle抓包-数据包分析
额,这篇忘了是来自哪位作者的了. whistle:1.14.6 这里以抓取浏览器数据包为例,分析抓取的数据. Method:Connect,对应Host:Tunnel to意思是因为网络环境受限,客户 ...
- 51nod1229-序列求和V2【数学,拉格朗日插值】
正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1229 题目大意 给出\(n,k,r\)求 \[\sum_{i=1}^ni ...
- P6847-[CEOI2019]Magic Tree【dp,线段树合并】
正题 题目链接:https://www.luogu.com.cn/problem/P6847 题目大意 \(n\)个点的一棵树上,每个时刻可以割掉一些边,一些节点上有果实表示如果在\(d_i\)时刻这 ...
- P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P7408 题目大意 一个有\(n+1\)层的地牢,从\(i\)到\(i+1\)层要\(A_i\)点能量,第\(i\) ...
- P3703-[SDOI2017]树点涂色【LCT,线段树】
正题 题目链接:https://www.luogu.com.cn/problem/P3703 题目大意 \(n\)个点的一棵树开始所有点有不同的颜色,\(m\)次操作 将根节点到\(x\)节点的路径上 ...
- CF708E-Student‘s Camp【数学期望,dp】
正题 题目链接:https://www.luogu.com.cn/problem/CF708E 题目大意 有\(n*m\)的矩形网格,然后每次每行最左边和最右边的格子各有\(p=\frac{c}{d} ...