数学一本通——Two Circles and a Rectangle(临界条件)

简介: 数学一本通——Two Circles and a Rectangle(临界条件)

E. Two Circles and a Rectangle

Description

Give you two circles and a rectangle, your task is to judge whether the two circles can be put into the rectangle with no part of circles outside the retangle.


Input

There are multiple test cases. In every test cast, there are four float-point numbers:

a,b,r1,r2

where, a and b are two sides of the rectangle, r1 and r2 are radii of the two circles.


Output

Print a “Yes”, if the circles can be put into the rectangle. Otherwise, print a “No”.


You can safely assume x<y, where x and y are float-point numbers, if x<y+0.01.


Samples

Input Copy

5 4 1 1

5 4 1.5 2

Output

Yes

No


题意:

给一个矩形和两个圆,问矩形是否能够放开两个圆。

思路:

假设矩形的长为a,宽为b,大圆半径为r1,小圆半径为r2。

首先要满足的条件为b>2*r1。

再来考虑边界情况:

20200401134307494.png

图片来源

可以看出直角三角形是满足条件的边界条件。

最后,其实不判0.01的精度的能过,就是直接cin没识别多组输入.

代码:

#pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll>PLL;
typedef pair<int,int>PII;
typedef pair<double,double>PDD;
#define I_int ll
inline ll read()
{
    ll x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
    {
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
#define read read()
#define closeSync ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define multiCase int T;cin>>T;for(int t=1;t<=T;t++)
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i<(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define perr(i,a,b) for(int i=(a);i>(b);i--)
ll ksm(ll a,ll b,ll p)
{
    ll res=1;
    while(b)
    {
        if(b&1)res=res*a%p;
        a=a*a%p;
        b>>=1;
    }
    return res;
}
#define PI acos(-1)
#define x first
#define y second
int main(){
    double a,b,r1,r2;
    while(scanf("%lf%lf%lf%lf",&a,&b,&r1,&r2)!=EOF){
        if(a<b) swap(a,b);///a为长边
        if(r1<r2) swap(r1,r2);///r1为大圆半径
        if(b<2*r1) puts("No");
        else{
            if((r1+r2)*(r1+r2)<=(a-r1-r2)*(a-r1-r2)+(b-r1-r2)*(b-r1-r2)) puts("Yes");
            else puts("No");
        }
    }
    return 0;
}
目录
相关文章
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P6】(第六章:10题速过定时计数器的结构和工作方式例题)经典例题盘点(带图解析)
|
6月前
|
存储 索引
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)
43 1
|
7月前
|
网络协议 网络安全 网络虚拟化
网工大题题型总结(3)------2018到2022大题类型总结
网工大题题型总结(3)------2018到2022大题类型总结
37 2
|
7月前
|
开发框架 .NET
【期末不挂科-单片机考前速过系列P4】(第四章:32题搞定基本指令例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P4】(第四章:32题搞定基本指令例题)经典例题盘点(带图解析)
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-150 6-1 递归求二项式系数值
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-150 6-1 递归求二项式系数值
70 1
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
90 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
算法
转:用一个例子说明Floyd算法
弗洛伊德算法(Floyd&#39;s algorithm)是一种用于求带权图中最短路径的算法,适用于带有正负权边的图(但不能有负环)。这种算法也有时被称为弗洛伊德-沃尔什算法。该算法基于动态规划,其时间复杂度为O(V^3),其中V是图中的顶点数。此外,该算法还可用于检测图中的负环并求出传递闭包。
132 2
y=sinx在[0,2π]上的反函数?y=sinx在[π/2,π]上的反函数是x=π-arcsiny?通过此文弄清楚三角函数反函数中的关系
y=sinx在[0,2π]上的反函数?y=sinx在[π/2,π]上的反函数是x=π-arcsiny?通过此文弄清楚三角函数反函数中的关系
577 0
y=sinx在[0,2π]上的反函数?y=sinx在[π/2,π]上的反函数是x=π-arcsiny?通过此文弄清楚三角函数反函数中的关系
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
【CCCC】L3-018 森森美图 (30分),计算几何+判断三点共线+bfs最短路
151 0
|
大数据 网络安全 数据安全/隐私保护
考点:枚举法解数学题,按照条件来限定枚举结果【Python习题11】
考点:枚举法解数学题,按照条件来限定枚举结果【Python习题11】
155 0