cf 320# A Problem about Polyline (二分)
来源:互联网 发布:java文件中文乱码 编辑:程序博客网 时间:2024/04/27 06:17
题目:http://codeforces.com/problemset/problem/578/A
题意:给定一种波形 (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + x, x) – ....,求出最小的x,使得整点s(a,b)在波形上,不存在x则输出-1。
分析:若存在一点p(2kx,0),使得点p(2kx,0)与点s(a,b)的斜率k=1或者-1,那么就有解,即a+b=2kx或者a-b=2kx,k为整数。然后二分区间就行了。
代码:
#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;const double AE = 1e-13;bool ok(int m1,int m2,double x1,double x2)//x1~x2{double p1,p2;long long t1,t2;p1=(m1+m2)/(2*x1);p2=(m1+m2)/(2*x2);t1=p1=floor(p1+AE);t2=p2=ceil(p2);if(t1>=t2)return true;p1=(m1-m2)/(2*x1);p2=(m1-m2)/(2*x2);t1=p1=floor(p1+AE);t2=p2=ceil(p2);if(t1>=t2)return true;return false;}double Find(int m1,int m2){double ret=1e19,down=m2,up=1e18,mid;for(int i=0;i<100000;i++){mid=(down+up)/2.0;if(ok(m1,m2,down,mid))up=mid;elsedown=mid;}return mid;}int main(){int m1,m2;scanf("%d%d",&m1,&m2);if(m1<m2){printf("-1\n");return 0;}double ans=Find(m1,m2);if(ans>1e17){printf("-1\n");return 0;}printf("%.13lf\n",ans);return 0;}
0 0
- cf 320# A Problem about Polyline (二分)
- cf#320 Div.2 Problem C A Problem about Polyline
- cf#320 Div.2 Problem C A Problem about Polyline
- A Problem about Polyline
- cf C. A Problem about Polyline (数学题)
- Codeforces Round #320 (Div. 1) A. A Problem about Polyline
- Codeforces Round #320 (Div. 2)C. A Problem about Polyline
- Codeforces Round #320 (Div. 2) C. A Problem about Polyline
- Codeforces Round #320 (Div. 2) C - A Problem about Polyline
- Codeforces Round #320 (Div. 2) C - A Problem about Polyline
- codeforces 320c A Problem about Polyline(数学)
- Codeforces Round #320 (Div. 2) C. A Problem about Polyline
- Codeforces Round #320 (Div. 2) 578A. A Problem about Polyline
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C. A Problem about Polyline 精度控制
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] C. A Problem about Polyline
- Codeforces 579 C. A Problem about Polyline(Codeforces Round #320 (Div. 2) )
- Codeforces Round #320 (Div. 2) 579C A Problem about Polyline(数学)
- [CodeForces 579C]A Problem about Polyline[数学]
- spring2.5.6与hibernate3.3整合
- Linux终端常用快捷键
- MFC程序入口和执行流程
- 开发手记0917
- 2016校园招聘笔试编程题_1
- cf 320# A Problem about Polyline (二分)
- Linux文件特殊权限解析
- Lua 学习笔记(二)
- JavaScript中OnLoad几种使用方法,onload 后面执行的函数不能加括号 加了就立即执行。
- 深入探讨Oracle函数索引
- 非递归学习树结构(二)--前中后遍历
- 从键盘输入6个字符串(仅仅包含英文字母和数字),对这6个字符串从小到大排列并输出结果。
- 抽象类和接口的区别
- java面试笔试题大汇总