URAL 1572 Yekaterinozavodsk Great Well(简单几何)

来源:互联网 发布:在淘宝卖保健品的要求 编辑:程序博客网 时间:2024/05/24 06:40

URAL 1572 Yekaterinozavodsk Great Well(简单几何)

题意:

       有一个大坑(可能是圆,正方形或三角形的),然后有n个不计厚度的井盖(可能是圆,正方形或三角形),现在要你判断是否能把井盖扔进坑里去?

分析:

       注意本题不是看坑能否完全包围井盖,而是只要能把井盖扔到坑里去就行.

       所以只需要坑的最大宽度<=井盖的最小长度即可.(想象一下你现在要扔一块模板到脚底的圆形下水道去,多长的木板是你不能扔进去的)

       注意:三角形的最大长度==边长,而最小长度==高.

AC代码:

#include<cstdio>#include<cmath>using namespace std;double get_max(int type,double len)//返回图形最长的部分{    if(type==1) return 2*len;    else if(type==2) return sqrt(2)*len;    return len;}double get_min(int type,double len)//返回图形最短的部分{    if(type==1) return 2*len;    else if(type==2) return len;    return sqrt(3.0)/2*len;}int main(){    int type;    double len;    while(scanf("%d%lf",&type,&len)==2)    {        double max_length=get_max(type,len);        int n,sum=0;        scanf("%d",&n);        while(n--)        {            scanf("%d%lf",&type,&len);            double min_length=get_min(type,len);            if(min_length<=max_length)                ++sum;        }        printf("%d\n",sum);    }    return 0;}

0 0