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是什么鬼。。
啊啊啊啊啊啊为什么为什么为什么。。。。。。
=.=
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<vector> 6 #include<map> 7 #define LL long long 8 using namespace std; 9 LL a,b,c,x,y; 10 LL read(LL & n) 11 { 12 int flag=0,x=0;char c='/'; 13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;} 14 while(c>='0'&&c<='9')x=x*10+(c-48),c=getchar(); 15 if(flag)n=-x; 16 else n=x; 17 } 18 LL gcd(LL a,LL b) 19 { 20 if(b==0)return a; 21 else return gcd(b,a%b); 22 } 23 LL exgcd(LL a,LL b,LL &x ,LL & y) 24 { 25 if(b==0) 26 {x=1;y=0;return a;} 27 LL r=exgcd(b,a%b,x,y); 28 LL tmp=x;x=y;y=tmp-(a/b)*y; 29 return r; 30 } 31 int main() 32 { 33 //freopen("BlackHawk.in","r",stdin); 34 //freopen("BlackHawk.out","w",stdout); 35 //read(a);read(b);read(c); 36 cin>>a>>b>>c; 37 LL p=gcd(a,b); 38 if(c%p!=0) 39 { 40 printf("-1 -1\n0"); 41 return 0; 42 } 43 exgcd(a,b,x,y); 44 // printf("%d %d",x,y); 45 LL xx=ceil((long double)-x/b*c); 46 LL yy=floor((long double)y/a*c); 47 LL ans=yy-xx+1; 48 LL ans1=x*c/p+y*c/p+(b-a)/p*yy; 49 LL ans2=x*c/p+y*c/p+(b-a)/p*xx; 50 if(ans<=0) printf("-1 -1\n0"); 51 else cout<<min(ans1,ans2)<<" "<<max(ans1,ans2)<<endl<<ans; 52 return 0; 53 }
转载于:https://www.cnblogs.com/zwfymqz/p/6896283.html
2057. [ZLXOI2015]殉国相关推荐
- COGS 2057. [ZLXOI2015]殉国
★☆ 输入文件:BlackHawk.in 输出文件:BlackHawk.out 评测插件 时间限制:0.05 s 内存限制:256 MB [题目描述] 正义的萌军瞄准了位于南极洲的心灵 ...
- poj 2057 树形DP,数学期望
题目链接:http://poj.org/problem?id=2057 题意:有一只蜗牛爬上树睡着之后从树上掉下来,发现后面的"房子"却丢在了树上面, 现在这只蜗牛要求寻找它的房子 ...
- 2057. 值相等的最小索引
2057. 值相等的最小索引 给你一个下标从 0 开始的整数数组 nums ,返回 nums 中满足 i mod 10 == nums[i] 的最小下标 i :如果不存在这样的下标,返回 -1 . x ...
- 信息学奥赛一本通 2057:【例3.9 】星期几
[题目链接] ybt 2057:[例3.9 ]星期几 [题目考点] 1. switch语句 2. if-else if语句 3. 字符数组或string类数组 [题解代码] 解法1:switch语句 ...
- 信息学奥赛一本通(2057:【例3.9 】星期几)
2057:[例3.9 ]星期几 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1641 通过数: 917 [题目描述] 根据输入的表示星期几的数字,对应输 ...
- 【ACM】杭电OJ 2057
思路: 本题注意十六进制的输入输出格式. 注意: 1.别忘了需要用__int64,因为数据比较大: 2.两数相加为负数的时候,想着分开考虑. #include <iostream> #in ...
- 【解题报告】Leecode 2057. 值相等的最小索引——Leecode周赛系列
题目链接:https://leetcode-cn.com/problems/smallest-index-with-equal-value/ 题解汇总:https://zhanglong.blog.c ...
- 前端学习(2057):vue.js的安装方法
- LeetCode 2057. 值相等的最小索引
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums ,返回 nums 中满足 i mod 10 == nums[i] 的最小下标 i :如果不存在这样的下标,返 ...
最新文章
- 35岁以后,不要成为程序员中的钻石
- springboot输出hello world_Spring Boot 入门教程 | 图文讲解
- java中tomcat检测_eclipse+tomcat测试JSP
- python knn-基于python实现KNN分类算法
- 软件工程--第三周学习进度
- mysql数据库试题下载_MYSQL数据库2013-2014学年考试试卷
- OC-数组排序-NSSortDescriptor使用
- [reprint]如何编写引导程序 Hello World
- 一个风格诡异的ABAP学习网站
- LeetCode 2085. 统计出现过一次的公共字符串(哈希)
- J2EE如何生成验证码图片和点击刷新验证码
- mysql fn_2019 数据库趋势报告,最受欢迎的是 MySQL
- android获取电池是否充电,Android 判断电池是否为充电状态的方法
- 最新Android开发视频教程 Android Studio教程(2017-2018-2019)
- MAE平均绝对误差和MSE均方误差
- codevs5172 装病的聚聚 (最短路spfa的延伸应用)(对三角不等式的深入理解)--by lethalboy
- 世界是客观存在的吗?
- 操作系统位数与数据字节数的关系
- 生成CA根证书、公钥、私钥指令(数字证书)
- 天池数据集|精品数据集推荐(工业篇)