• 计蒜客 The 2018 ACM-ICPC Chinese Collegiate Programming Contest Rolling The Polygon


     1 include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <algorithm>
     6 #include <utility>
     7 #include <vector>
     8 #include <map>
     9 #include <queue>
    10 #include <stack>
    11 #include <cstdlib>
    12 #include <cmath>
    13 typedef long long ll;
    14 #define lowbit(x) (x&(-x))
    15 #define ls l,m,rt<<1
    16 #define rs m+1,r,rt<<1|1
    17 using namespace std;
    18 #define pi acos(-1)
    19 const int N=60;
    20 struct Node{
    21     int x,y;
    22 }node[N];
    23 int  main()
    24 {
    25     int t,n;
    26     double tx,ty;
    27     scanf("%d",&t);
    28     for(int i=1;i<=t;i++)
    29     {
    30         scanf("%d",&n);
    31         for(int i=0;i<n;i++){
    32             scanf("%lf%lf",&node[i].x,&node[i].y);//lf
    33         }
    34         scanf("%lf%lf",&tx,&ty);
    35         // 为了下面的第n次旋转
    36         node[n].x=node[0].x,node[n].y=node[0].y;
    37         node[n+1].x=node[1].x,node[n+1].y=node[1].y;        
    38         double ans=0;
    39         for(int i=0;i<n;i++)//要转n次
    40         {
    41             double a=sqrt(pow(node[i].x-node[i+1].x,2)+pow(node[i].y-node[i+1].y,2));
    42             double b=sqrt(pow(node[i+1].x-node[i+2].x,2)+pow(node[i+1].y-node[i+2].y,2));
    43             double c=sqrt(pow(node[i].x-node[i+2].x,2)+pow(node[i].y-node[i+2].y,2));
    44             //利用余弦定理求角度
    45             // pi-acos((a*a+b*b-c*c)/(2*a*b)) 为node[i+1]转过的角度,也就是(tx,ty)转过的角度
    46             double l=pi-acos((a*a+b*b-c*c)/(2*a*b));//一个小数,因为最后也以小数形式输出。
    47             //弧长=半径*弧度
    48             double r=sqrt(pow(node[i+1].x-tx,2)+pow(node[i+1].y-ty,2));
    49             ans+=l*r;
    50         }
    51         printf("Case #%d: %.3f
    ",i,ans);
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    JavaScript数字和字符串转换示例
    Angular CLI 使用教程指南参考
    angular2 post以“application/x-www-form-urlencoded”形式传参的解决办法
    Arison [JS]window.location获取url各项参数详解
    $.ajaxComplete()
    angular2 编写公用组件
    获取本周、本季度、本月、上月的开端日期、停止日期
    Angular2
    轮播图插件 SuperSlide2.1滑动门jQuery插件
    书写Css文件要点
  • 原文地址:https://www.cnblogs.com/tingtin/p/9332364.html
Copyright © 2020-2023  润新知