zoukankan      html  css  js  c++  java
  • 【立体几何】分类讨论很细节 Gym

    http://codeforces.com/gym/101967/attachments

    题意:定义了一个甜甜圈。(torus)

    不是让你二重积分啦233

    现在有一个星球是甜甜圈形状的,它有四条很关键的纬线,南极北极里赤道外赤道。同时有n条均匀分布的经线。每一圈经线和四条和纬线交出四个点。现在你从内赤道的某圈经线上出发,沿着经纬线访问所有的经线,访问的意思是:对于每个经线,至少走过其与两条纬线的交点。

    题解:照着样例摸一下,不用算法,只是很细节。

    #include <iostream>
    #include <vector>
    #include <cstdlib>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include<cstdio>
    #include<vector>
    #include<ctime>
    #include<string>
    #define rep(i,t,n)  for(int i =(t);i<=(n);++i)
    #define per(i,n,t)  for(int i =(n);i>=(t);--i)
    #define mmm(a,b) memset(a,b,sizeof(a))
    using namespace std;
    typedef long long ll;
    const double PI = acos(-1.0);
    
    int main()
    {
        double r, R;
        int n;
        scanf("%lf%lf%d", &r, &R, &n);
        int N = n;
        double inner =  PI * 2 *(R-r)/n;
        double onner =  PI * 2 *(R)/n;
        double lesser = PI * 2 * r/4;
        double ans = 0;
        if (N == 1) {
            printf("%.15lf
    ",lesser);
            return 0;
        }
    
        if (lesser*4+inner*2 < lesser*2+onner+inner) {
            ans = lesser*2;
            ans += (N-1)*(lesser*2+inner);
            ans -= lesser;
        }
        else {
            if (N&1==1) {
                int t = N-3;
                ans = lesser*3+onner+inner;
                ans += (t/2)*(lesser*2+inner+onner);
            }else {
                int t = N-2;
                ans = min(lesser*2+onner,lesser*3+inner);
                ans += (t/2)*(lesser*2+inner+onner);
            }
        }
        printf("%.15lf
    ", ans);
    }
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    shiro注解,初始化资源和权限,会话管理
    shiro标签
    20个为前端开发者准备的文档和指南
    Canvas处理头像上传
    Chrome 实用调试技巧
    JS 代码编一个倒时器
    sql server优化
    在线图片压缩网站
    Request.QueryString
    C#网络爬虫
  • 原文地址:https://www.cnblogs.com/SuuT/p/9943045.html
Copyright © 2011-2022 走看看