题解 P6320 【[COCI2006-2007#4] SIBICE】

· · 题解

原问题不难转换为:如果火柴长度\leq矩形内以及矩形上两点最远距离,则输出DA,否则输出NE

现在我们求矩形内以及矩形上最远两点的距离:

设矩形顶点A(0,0),B(0,y),C(x,y),D(x,0),这里x,y>0

矩形内或矩形上两点E(x_1,y_1),F(x_2,y_2),那么显然0\leq x_1,x_2\leq x,0\leq y_1,y_2\leq y

EF=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}

|x_1-x_2|\leq x,|y_1-y_2|\leq y

EF\leq \sqrt{x^2+y^2}

因此,只要火柴长度\leq \sqrt{w^2+h^2}即可放下。

CODE:

#include<bits/stdc++.h>
using namespace std;
int n;
double w,h,x;
int main(){
    cin>>n>>w>>h;
    for(int i=1;i<=n;++i){
        cin>>x;
        cout<<(sqrt(w*w+h*h)<x?"NE":"DA")<<endl;
    }
    return 0;
}

要抄窝的题解请理解后再抄qwq