【poj1005】I Think I Need a Houseboat 题解&代码(c++)

题目链接


http://poj.org/problem?id=1005


题解


借助翻译工具终于是把题意看懂了,出题人不给数据范围这点很烦啊,个人在做的时候不小心忘记陆地是半圆形消失的,算半径时出了错,真的是马虎啊。因为不知道数据范围所以二分做的,想了想也只有这样最快了吧。


代码


#include
#include
#include
using namespace std;
int n,a[100005];
double x,y;
int main()
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        cin>>x>>y;
        int ans=1,l=1,r=1000;
        double dis=x*x+y*y;
        while(l<=r)
        {
            int mid=(l+r)/2;
            double tmp=(double)mid*100.0/3.1415;
            if (dis>tmp)
            l=mid+1;
            else
            {
                ans=mid;
                r=mid-1;
            }
        }
        a[i]=ans;
    }
    for (int i=1;i<=n;i++)
    printf("Property %d: This property will begin eroding in year %d.\n",i,a[i]);
    printf("END OF OUTPUT.\n");

}

你可能感兴趣的:(poj,二分,poj)