codeforces Looksery Cup 2015 H Degenerate Matrix

Posted wzzkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces Looksery Cup 2015 H Degenerate Matrix相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces VK Cup 2018 Div.2

Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem F (Codeforces 831F) - 数论 - 暴力(

Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem D (Codeforces 831D) - 贪心 - 二分答

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C

Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)