• UVA 11186 Circum Triangle (枚举三角形优化)(转)


    题意:圆上有n个点,求出这n个点组成的所有三角形的面积之和

    题解:

    当我们要求出S(i,j,k)时,我们需要假设k在j的左侧,k在i与j之间,k在i的右侧。

     如果k在 j的左侧  那么 S(i,j,k) = S(i,k,o)+s(i,j,o) - s(k,i,o); 显然 只要k在j的左侧  s(i,j,0) 在用来求 做和用的。

    如果k在 的i右侧  那么 S(i,j,k) = S(i,k,o)+s(i,j,o) - s(k,j,o); 显然 只要k在i的右侧  s(i,j,0) 在用来求 做和用的。

    如果k在 i,j的中间  那么 S(i,j,k) = S(j,k,o)+s(i,k,o) - s(i,j,o); 显然 只要k在i,j的中间  s(i,j,0) 在用来求 做差用的。

    那么 我们就可以对于 线段 i,j  对于后面 或者前面的点来说 都需要加上oji 这一块面积  而对于  ij 中间的 点来说  都需要 减去这一块。

    那么对于这一块面积。  总共的 需求为   当k在左侧的时候 : n - j - 1    k在右侧是时候   为  i   加起来为  n - j + i - 1;

    对于k位于中间来说。   总共需要减去 个数为   j - i  - 1个。

    那么 总共就是  n + 2i - 2j  个

    #include<set>
    #include<map>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<vector>
    #include<string>
    #include<cstdio>
    #include<cstring>
    #include<iomanip>
    #include<stdlib.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define eps 1E-8
    /*注意可能会有输出-0.000*/
    #define Sgn(x) (x<-eps? -1 :x<eps? 0:1)//x为两个浮点数差的比较,注意返回整型
    #define Cvs(x) (x > 0.0 ? x+eps : x-eps)//浮点数转化
    #define zero(x) (((x)>0?(x):-(x))<eps)//判断是否等于0
    #define mul(a,b) (a<<b)
    #define dir(a,b) (a>>b)
    typedef long long ll;
    typedef unsigned long long ull;
    const int Inf=1<<28;
    const ll INF=1ll<<60;
    const double Pi=acos(-1.0);
    const int Mod=1e9+7;
    const int Max=10010;
    double g[Max];
    int main()
    {
    int n,r;
    while(~scanf("%d %d",&n,&r))
    {
        if(!n&&!r)
            break;
        for(int i=0;i<n;++i)
        {
            scanf("%lf",&g[i]);
            g[i]=g[i]/180*Pi;
        }
        sort(g,g+n);
        double ans=0;
        for(int i=0;i<n;++i)
        {
            for(int j=i+1;j<n;++j)
            {
                ans+=(n+2*i-2*j)*1.0*sin(g[j]-g[i]);
            }
        }
        ans=ans*r*r*0.5;
        printf("%.0f
    ",ans);
    }
    return 0;
    }

     参考:(找不到原网址了,如有人知道请联系我,谢谢了)

  • 相关阅读:
    深入理解Java并发之synchronized实现原理
    Untracked Files Prevent Checkout move or commit them before checkout
    java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
    Java 实例
    java队列——queue详细分析
    Jquery 获取table当前行内容
    Java list 分页(多种方式)
    获取当天的开始时间、结束时间等等的一个工具类
    java list按照元素对象的指定多个字段属性进行排序
    [译] OpenStack Kilo 版本中 Neutron 的新变化
  • 原文地址:https://www.cnblogs.com/zhuanzhuruyi/p/6160694.html
Copyright © 2020-2023  润新知