2057. [ZLXOI2015]殉国
★☆ 输入文件:BlackHawk.in 输出文件:BlackHawk.out 评测插件
时间限制:0.05 s
内存限制:256 MB
【题目描述】

正义的萌军瞄准了位于南极洲的心灵控制器,为此我们打算用空袭摧毁心灵控制器,然而心灵控制器是如此强大,甚至能缓慢控制飞行员。一群勇敢的士(feng)兵(zi)决定投弹后自杀来避免心灵控制。然而自杀非常痛苦,所以萌军指挥官决定到达目的地后让飞机没油而坠落(也避免逃兵)。军官提供两种油:石油和中国输送来的地沟油,刚开始飞机没有油,飞机可以加几桶石油和几桶地沟油(假设石油和地沟油都有无限桶),飞机落地时必须把油耗尽,已知一桶石油和一桶地沟油所能支撑的飞行距离分别为a,b,驾驶员们必须飞往一个目的地,总距离为c.
1.最少,最多需要加几桶油,若只有一种方案,最少和最多的是相同的.
2.总共有多少种不同的加油配方(死法)能到达目的地。
【输入格式】
只有一行,三个正整数a,b,c
【输出格式】
两行,第一行为最少加几次油和最多加几次油,
第二行为加油方法总数。
若不存在任何方法,第一行输出-1 -1
第二行输出0
【样例输入】
样例1:
2 3 10
样例2:
6 8 10
【样例输出】
样例1:
4 5
2
样例2:
-1 -1
0
【提示】
样例解释:
样例一:飞机加两次石油,两次地沟油,总次数为4,2*2+3*3=10
飞机加五次石油,不加地沟油,总次数为5,2*5+3*0=10
总共两种
样例二:飞机无法到达目的地
数据范围:
对于10%的数据,a<=103,b<=103,c<=103
对于20%的数据,a<=104,b<=104,c<=106
对于50%的数据,a<=109,b<=109,c<=109
对于100%数据,a<=3⋅1018,b<=3⋅1018,c<=3⋅1018
三个答案分值权重分别为20%,30%,50%
【来源】
这个题就是个扩展欧几里得的裸题,也不算太裸,因为涉及到求最小值和最大值的问题
但是自己写了一个交上去爆零,后来看了看比人写的代码,发现还是懵逼在45—49行里。。
4546貌似是求最大区间,,但是为什么要/b/a呢?x为什么要加负号呢??
还有ans1,ans2的b-a是什么鬼。。
啊啊啊啊啊啊为什么为什么为什么。。。。。。
=.=
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#define LL long long
using namespace std;
LL a,b,c,x,y;
LL read(LL & n)
{
int flag=,x=;char c='/';
while(c<''||c>''){c=getchar();if(c=='-')flag=;}
while(c>=''&&c<='')x=x*+(c-),c=getchar();
if(flag)n=-x;
else n=x;
}
LL gcd(LL a,LL b)
{
if(b==)return a;
else return gcd(b,a%b);
}
LL exgcd(LL a,LL b,LL &x ,LL & y)
{
if(b==)
{x=;y=;return a;}
LL r=exgcd(b,a%b,x,y);
LL tmp=x;x=y;y=tmp-(a/b)*y;
return r;
}
int main()
{
//freopen("BlackHawk.in","r",stdin);
//freopen("BlackHawk.out","w",stdout);
//read(a);read(b);read(c);
cin>>a>>b>>c;
LL p=gcd(a,b);
if(c%p!=)
{
printf("-1 -1\n0");
return ;
}
exgcd(a,b,x,y);
// printf("%d %d",x,y);
LL xx=ceil((long double)-x/b*c);
LL yy=floor((long double)y/a*c);
LL ans=yy-xx+;
LL ans1=x*c/p+y*c/p+(b-a)/p*yy;
LL ans2=x*c/p+y*c/p+(b-a)/p*xx;
if(ans<=) printf("-1 -1\n0");
else cout<<min(ans1,ans2)<<" "<<max(ans1,ans2)<<endl<<ans;
return ;
}
2057. [ZLXOI2015]殉国的更多相关文章
- 扩展欧几里德算法 cogs.tk 2057. [ZLXOI2015]殉国
2057. [ZLXOI2015]殉国 ★☆ 输入文件:BlackHawk.in 输出文件:BlackHawk.out 评测插件时间限制:0.05 s 内存限制:256 MB [题目描 ...
- cogs 2057. [ZLXOI2015]殉国
2057. [ZLXOI2015]殉国 ★☆ 输入文件:BlackHawk.in 输出文件:BlackHawk.out 评测插件时间限制:0.05 s 内存限制:256 MB [题目描 ...
- COGS——T 2057. [ZLXOI2015]殉国
http://cogs.pro/cogs/problem/problem.php?pid=2057 ★☆ 输入文件:BlackHawk.in 输出文件:BlackHawk.out 评测插件 ...
- [ZLXOI2015]殉国
2057. [ZLXOI2015]殉国 http://cogs.pro/cogs/problem/problem.php?pid=2057 ★☆ 输入文件:BlackHawk.in 输出文件: ...
- [ZLXOI2015]殉国 数论 扩展欧几里得
题目大意:已知a,b,c,求满足ax+by=c (x>=0,y>=0)的(x+y)最大值与最小值与解的个数. 直接exgcd,求出x,y分别为最小正整数的解,然后一算就出来啦 #inclu ...
- hdu 2057 A+B
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 For each test case,print the sum of A and B in h ...
- hdu 2057 A+B Again
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2057 题目分析:涉及到16进制内的加法,可以用%I64x直接来处理,要注意到16进制中负数是用补码来表 ...
- HDU 2057 十六进制加减法
http://acm.hdu.edu.cn/showproblem.php?pid=2057 水题,%I64X 长整形十六进制输入输出 #include<stdio.h> in ...
- AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ
#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include &l ...
随机推荐
- CE310A
http://v.ku6.com/show/tvWNTLZTVWuGVPE5ZMSUyQ...html
- Java导出jar并运行
1. 创建manifest.mf文件 在工程下创建manifest.mf文件.文件内容为: Manifest-version: 1.0 Main-Class: SqlCheckUtil.java 注意 ...
- how to read openstack code: Neutron architecture
今天这一章节非常重要.我们知道neutron是一个非常复杂的系统,由很多组件构成.研究这样一个复杂的系统,正确的顺序应该是现在宏观上对其整体结构有所了解,然后再由针对性的对其组件进行深入了解.本章要做 ...
- 我的arcgis培训照片6
来自:http://www.cioiot.com/successview-556-1.html
- Java之旅(1)—Class类
看到Class的时候,我们是不是会一下子想到我们敲代码中的class呢?此Class非彼class,这里讲的Class类实际上就是java类的统称,我们能够将其称之为抽象的类不是详细的一个类的名字. ...
- mysql正则表达式及应用
mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个 ...
- HDU 1018 Big Number (log函数求数的位数)
Problem Description In many applications very large integers numbers are required. Some of these app ...
- Codeforces(429D - Tricky Function)近期点对问题
D. Tricky Function time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 【codeforces379F】 New Year Tree
距离一个点最远的点一定是直径的一个端点.考虑运用这个原理,每次维护一下直径端点即可. #include<algorithm> #include<iostream> #inclu ...
- 解决myeclipse在mac中Retina屏幕中模糊的终极详细方法