码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces Looksery Cup 2015 H Degenerate Matrix

时间:2017-07-20 16:26:01      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:new   error   ddd   cpp   cas   个数   base   art   code   

The determinant of a matrix 2?×?2 is defined as follows:

技术分享

A matrix is called degenerate if its determinant is equal to zero.

The norm ||A|| of a matrix A is defined as a maximum of absolute values of its elements.

You are given a matrix 技术分享. Consider any degenerate matrix B such that norm ||A?-?B|| is minimum possible. Determine||A?-?B||.

Input

The first line contains two integers a and b (|a|,?|b|?≤?109), the elements of the first row of matrix A.

The second line contains two integers c and d (|c|,?|d|?≤?109) the elements of the second row of matrix A.

Output

Output a single real number, the minimum possible value of ||A?-?B||. Your answer is considered to be correct if its absolute or relative error does not exceed 10?-?9.

Sample test(s)
input
1 2
3 4
output
0.2000000000
input
1 0
0 1
output
0.5000000000
Note

In the first sample matrix B is 技术分享

In the second sample matrix B is 技术分享

这道题能够用二分做,由于要求矩阵最大值的最小值,所以最后A矩阵的每一个元素和B矩阵的每一个元素差值都小于等于一个数时最小,所以从0到10^9枚举差值,然后依据范围二分。

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int n,m,i,j;
	double l,r,mid,a,b,c,d,a1,a2,b1,b2,c1,c2,d1,d2,t1,t2,s1,s2;
	while(scanf("%lf%lf%lf%lf",&a,&b,&c,&d)!=EOF)
	{
		l=0.0,r=1000000000.0;
		for(i=1;i<=100000;i++){
		   mid=(l+r)/2.0;
		   a1=a+mid;a2=a-mid;
	       b1=b+mid;b2=b-mid;
		   c1=c+mid;c2=c-mid;
		   d1=d+mid;d2=d-mid;
		   t1=min(min(a1*d1,a1*d2),min(a2*d1,a2*d2));
		   t2=min(min(b1*c1,b1*c2),min(b2*c1,b2*c2));
		   s1=max(max(a1*d1,a1*d2),max(a2*d1,a2*d2));
		   s2=max(max(b1*c1,b1*c2),max(b2*c1,b2*c2));
		   if(t1<=s2 && t2<=s1)r=mid;
		   else l=mid;
		}
		double ans=l;
		printf("%.11f\n",ans);
	}
	return 0;
}


codeforces Looksery Cup 2015 H Degenerate Matrix

标签:new   error   ddd   cpp   cas   个数   base   art   code   

原文地址:http://www.cnblogs.com/wzzkaifa/p/7211798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!