ACdream 1098 圓有點擠

gg最近想給女友送兩個精美的小禮品:兩個底面半徑分別爲R1和R2的圓柱形寶石,並想裝在一個盒子裏送給女友。好不容易找到了一個長方體的盒子,其底面爲A*B的矩形,他感覺好像寶石裝不進去,但又不敢輕易塞進去試試。現請你幫他判斷兩個寶石能否放進盒子裏(寶石只能豎直放置,且不能堆疊)。 Input

輸入的第一行是一個整數,爲數據的組數t(t<=1000)。

每組數據佔一行,包括4個數A,B,R1,R2,均爲不超過1e4的正整數。

Output
對於每組數據,若兩個寶石能放進盒子中,則輸出YES,否則輸出NO。
Sample Input
2
10 10 1 1
10 10 4 4
Sample Output
YES
NO
原題鏈接:http://acdream.info/problem?pid=1098

代碼:

#include <iostream>  
#include<cstdio>  
#include<cmath>   
using namespace std;  
   
int main()  
{  
    int t;  
    scanf("%d",&t);  
    while(t--)  
    {  
        int a,b,r1,r2;  
        scanf("%d%d%d%d",&a,&b,&r1,&r2);  
        if(a<b) swap(a,b);  //這條語句使得a>b
        if(r1<r2) swap(r1,r2);  //這條語句使得r1>r2
        if(2*r1>b)  //如果大圓的直徑>矩形的寬,則一定放不下圓柱形寶石
        {  
            printf("NO\n");  
            continue;  
        }  
        int x=b-r2-r1,y=a-r1-r2;  
        int z=r1+r2;  
        if(x*x+y*y>=z*z) printf("YES\n");  //通過畫圖能知道這個關係
        else printf("NO\n");  
    }  
    return 0;  
} 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章