码迷,mamicode.com
首页 > 其他好文 > 详细

Probability Through Experiments

时间:2014-08-01 19:41:17      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:acm

题目链接

  • 题意:
    给n个在圆上的点,和圆的半径,每个点给出和x轴正方向的夹角,求能构成的锐角三角形的个数。
  • 分析:
    锐角不好求,对于钝角和直角是比较好求的:直角就是有一个边过圆心;钝角就是三个边均在圆心的一侧
  • 重点:
    这个题目很重要的一点就是精度问题,题目的输入是三位小数,但是直接用double做没办法AC。。。改用乘以1000后取整也无法AC,需要注意精度处理
const int MAXN = 41000;

int ipt[MAXN];

int main()
{
    LL n, r;
    int kase = 1;
    while (cin >> n >> r && (n && r))
    {
        REP(i, n)
        {
            int a, b;
            scanf("%d.%d", &a, &b);
            ipt[i] = a * 1000 + b;
        }
        sort(ipt, ipt + n);
        FF(i, n, n + n)
            ipt[i] = ipt[i - n] + 360000;
        LL ans = 0, idx, x;
        LL all = n * (n - 1) * (n - 2) / 6;
        REP(i, n)
        {
            idx = lower_bound(ipt + i, ipt + n + i, ipt[i] + 180000) - ipt;
            x = n + i - idx;
            if (x >= 2)
                ans += (x - 1) * x / 2;
        }
        cout << "Case " << kase++ << ": " << all - ans << endl;
    }
    return 0;
}


Probability Through Experiments,布布扣,bubuko.com

Probability Through Experiments

标签:acm

原文地址:http://blog.csdn.net/wty__/article/details/38341127

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!