扩欧——NKOJ P3677 观光车

CAD+ËÃÊÖ¼Á¼Íɼ 立即下载
问题描述

何老板带领n名游客来到一景区大门口,需要乘坐观光车游览景区。
景区提供两种观光车,一种是每辆车可以坐a名游客,包一辆车费用是p1块钱;另一种每辆车可以坐b名游客,包一辆车费用是p2块钱。
何老板想让这n名游客都坐上观光车,且每辆车都坐满。问何老板至少要花费多少钱?

输入格式
第一行,一个整数n,表示游客的总数。
第二行,两个空格间隔的整数,表示p1和a
第三行,两个空格间隔的整数,表示p2和b

输出格式
一行,一个整数,表示所需最少费用。
如果无解,输出“-1”

样例输入 1

43
1 3
2 4

样例输出 1
15

样例输入 2
40
5 9
5 12

样例输出 2
-1

提示
样例1说明:第一种车13辆,第二种车1辆
1 <= n,a,b,p1,p2 <= 2,000,000,000

分析:
设第一种车、第二种车分别包x,y,辆
x*a+y*b=n;   
设 x1,y1 是满足上式的一组解
cost= (x1+t*dx)*p1+(y1-t*dy)*p2
    =x1*p1+y1*p2+ (dx*p1-dy*p2)*t;
是一个关于t的一次函数;记斜率为K=dx*p1-dy*p2
由于x,y>0,可以求出t的定义域:
	x=x1+dx*t>=0  ==> t >= -x1/dx;
	y=y1-dy*t>=0  ==> t <= y1/dy;
若  K<0 ,t=tmin=-x1/dx;
    K>=0,t=tmax=y1/dy;
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>

#define LL long long
using namespace std;
LL n,p1,p2,a,b;

LL extend_gcd(LL a,LL b,LL &x,LL &y ){
	LL x0,y0,r;
	if(b==0){x=1;y=0; return a;}
	r=extend_gcd(b,a%b,x0,y0);
	x=y0;  y=x0-a/b*y0;
	return r;
}

int main(){
	LL gcd,x,y,mint,maxt,ans,dx,dy,k,t;
	cin>>n>>p1>>a>>p2>>b;
	gcd=extend_gcd(a,b,x,y);
	if(n%gcd!=0){
		cout<<-1; return 0;
	}
	x= x*n/gcd; y=y*n/gcd;
	ans= x*p1+y*p2;
	dx= b/gcd;	dy= a/gcd;
	k= (dx*p1-dy*p2);
	maxt= floor(((double) y)/dy);
	mint= ceil(((double) x)/ -dx);
	if(maxt<mint){
		cout<<"-1"; return 0;
	}
	else if(k>0) t=mint;
	else t=maxt;
	cout<<ans+k*t<<endl;
	//cout<<"k= "<<k<<" dx= "<<dx<<" dy="<<dy<<endl; 
	//cout<<"x= "<<x<<" y= "<<y<<" mint= "<<mint<<" maxt= "<<maxt<<endl;
}


Origin斜率计算插件 下载代码方式:https://pan.quark.cn/s/4dd9e377add0 【Origin斜率计算插件】是一款专为Origin 8.0环境开发的专用软件工具,其核心作用在于协助用户高效且精确地测定数据曲线的斜率值。Origin作为一款功能完备的科学数据分析与图形绘制软件,在科研及工程多个领域得到了广泛的应用。在科学研究过程中,斜率计算占据着核心地位,例如在物理学领域涉及速度与加速度的测算,化学反应速率的评估,生物医学研究的应用,以及工程问题的解决方案中均具有不可或缺的作用。 此插件的部署流程极为便捷,用户只需将压缩文件展开,随后将内部的Tangent.opk文件直接传送至正在运行的Origin 8.0软件操作界面中。这种直观的操作模式让用户无需经历繁琐的步骤即可完成插件的部署,从而有效提升了工作效率。 Origin 8.0的斜率计算性能主要体现在以下几个层面: 1. **曲线拟合**:Origin具备对多种线性与非线性曲线进行拟合的能力,用户能够借助拟合所得的数据点来求解曲线的斜率。这对于洞察数据变化趋势及模型验证具有决定性意义。 2. **数据处理**:在Origin平台中,用户可以便捷地导入实验数据,并对这些数据进行筛选、排序、平滑等初步处理,从而保障斜率计算的可靠性。 3. **图层操作**:Origin允许用户在不同图层之间进行操作,这在分析多个数据集时显示出显著优势。用户可以在每个图层上独立进行斜率计算,以便对比不同情境下的结果。 4. **Tangent分析**:该插件的核心特性在于能够在曲线图上自动或手动添加切线,并直接获取切线的斜率值。用户能够选择特定的点或区间,进而计算出瞬时斜率或平均斜率。 5. **自定义脚本**:Origin支... 立即下载

相关推荐

[NKOJ P6484]游历小镇

有N个小镇从左往右排列在数轴上,小镇被编号为1到N, 第i个小镇在Xi处。果老师最初在1号小镇处,果老师现在想游历完所有的小镇。果老师现在想知道他最少需要多少代价可以游历完所有的小镇。

ZLX0222的博客 1964

理解ex_gcd

ex_gcd 一直以来都不是很懂是啥,只知道怎么用,现在来小小的写一波理解吧,毕竟完全靠记模板也是不行的。 首先是用来解决   ax+by=c  这种问题的。 然后   有这么一个定理   ax+by=gcd(a,b)   一定有解。 由几里得定理我们知道  gcd(a,b)=gcd(b,a%b)——>bx+(a%b)y=ax+by 下面就涉及到取模的本质了。

ZJLORD 1213

NKOI 5月月赛 观光车(拓展几里德)

观光车                                                           时间限制:10000 MS   空间限制:65536 KB 问题描述 何老板带领n名游客来到一景区大门口,需要乘坐观光车游览景区。 景区提供两种观光车,一种是每辆车可以坐a名游客,包一辆车费用是p1块钱;另一种每辆车可以坐b名游客,包一辆车费用是p

SuperGate的博客 609

坑爹水题——数列

数列A的满足An=x*An-1+y,给出n,A0,x,y,求模100000007后的结果。 输入格式 第1行包含4个整数n,A0,x,y 输出格式 只有1行包含1个整数,An模100000007后的结果。 样例输入 样例输入1: 1000 333 1 233 样例输入2: 100 2 3 3 样例输出 样例输出1: 233333 样

INCINCIBLE的博客 1196

大组合数取模

考虑C(n,m)%P 情况一:n,m很大,P为素数 处理小范围的阶乘和阶乘的逆元 用卢卡斯定理即可。卢卡斯定理: 情况二: 当P= p1∗p2∗p3∗...∗pn% MathType!MTEF!2!1!+- % feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn % hiov2DGi1BTfMBaeXatLxBI9gBaerbd9w

INCINCIBLE的博客 1182

[ZJOI2015] 地震后的幻想乡

P3255【ZJOI2015 Day1】地震后的幻想乡 时间限制 : 20000 MS   空间限制 : 262144 KB 问题描述         傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们。         这不,幻想乡突然发生了地震,所有的道路都崩塌

INCINCIBLE的博客 1047

UVa 1642 魔法GCD + 区间问题总结

题目和题解请见刘汝佳紫皮书340页。 代码中用了STL中的map。也是现在才知道到map在系统中是以pair的形式存储的,first是键值,second是对应的映射值。 map的遍历仍然是使用类的迭代器。 代码如下: #include #include #include #include #include #include #define LL long long using namesp

INCINCIBLE的博客 986

拉】nkoj3685--8数

P3685  8数 时间限制 : - MS   空间限制 : 65536 KB 评测说明 : 时限:1000ms 问题描述 给一个正整数N,问是否存在N的倍数M,且M的各个位全部由数字8组成,如果存在多个取最小的M 并输出M由几个8组成。 输入格式 一行,一个整数N 输出格式 一行一个整数,表示所求的结果。 如果无解,输出0

INCINCIBLE的博客 956

Miller_Robin素数判定和Pollard_rho质因数分解模板

#include<cstdio> #include<iostream> #include<cstdlib> #include<cmath> #include<cstring> #include<queue> #include<vector> #include<algorithm>#define ULL unsigned long long using namespace std; const int

INCINCIBLE的博客 799

费马小定理降幂--nkoj3687 整数拆分

P3687  整数拆分 时间限制 : - MS   空间限制 : 65536 KB   评测说明 : 时限1000ms 问题描述 给你一个正整数N,F(x)表示把N拆分成x个正整数之和的方案数。 例如,当n=5时: F(1)=1,方案为:{5} F(2)=4,方案为:{1+4}  {4+1}  {2+3}  {3+2} F(3)=6,方案为:{1+1+3}  {1+3+

INCINCIBLE的博客 778

常用数论算法

几里得:解不定方程,求逆元 int extended_gcd(int a, int b, int &x, int &y) { int r, tmp; if (b==0) { x = 1; y = 0; return a; } r = extended_gcd(b, a % b, x, y); tmp = x; x = y; y = tmp

INCINCIBLE的博客 714

回文--nkoj3681

P3681  回文 时间限制 : - MS   空间限制 : 65536 KB 评测说明 : 时限1000ms 问题描述    给你一个由N个小写字母构成的字符串,请你将它改成“回文串”。你可以任意调整串中字符的位置,但不可以删掉其中的字符。问,最多能得到多少个不同的回文串?          结果可能很大,mod  1,000,000,007 后再输出!

INCINCIBLE的博客 637

高精度catalan数模板

//高精度的Catalan数模板 公式: h ( i ) = h ( i - 1 ) * ( 4 * i - 2 ) / (i + 1) const int MAX=100; const int BASE=10000; int h[101][MAX],i,j,n; void multiply(int *h,int Max,int b) //大数乘法 求”高精度数a“乘以”低精度数b”

INCINCIBLE的博客 564

高斯消元(xor方程组)模板

#include #include #include #include #include using namespace std; const int inf=0x3f3f3f3f; template inline void _read(T& x){ char ch=getchar();bool sign=true; while(!isdigit(ch)){if(ch=='-')

INCINCIBLE的博客 500

高精度模板

by spark: #include #include #include #include #define LL long long using namespace std; struct sparkint{ static const int BASE=100000000; static const int width=8; vector s; sparkint (LL num=0

INCINCIBLE的博客 484

拉 uva 11426 - GCD - Extreme (II)

题意:(详见蓝皮书P125) 给定正整数n,求下列表达式的值: G = ij ∑ ∑ GCD(i, j) i=1   j=i+1 Input The input file contains at most 100 lines of inputs. Each line contains an integer N (1 < N < 4000001).The meaning of

INCINCIBLE的博客 456

POJ 3150 Cellular Automaton

Cellular Automaton Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 3553   Accepted: 1434 Case Time Limit: 2000MS Description A cellular automaton is

INCINCIBLE的博客 372
上一篇: poj——1275 Cashier Employment 差分约束系统
下一篇: 前缀和---三分数组nkoj3049
INCINCIBLE
博客等级 码龄11年 31粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值