#include<bits/stdc++.h>
const double PI=acos(-1.0);
const double TT=PI/;
using namespace std;
struct Point { double x,y; Point(){} Point(double x, double y) :x(x), y(y){} };;
struct Segment{ Point a,b; Segment(Point x,Point y ) { a=x;b=y; }; Segment(){}; };;
struct Line { Point a,b; Line(Point x,Point y ) { a=x;b=y; }; Line(){}; };;
typedef Point Point;
Point operator + (Point A, Point B){ return Point(A.x+B.x, A.y+B.y); } // 向量相加
Point operator - (Point A, Point B){ return Point(B.x-A.x, B.y-A.y); } // 向量生成 A-B;
double operator * (Point A, Point B){ return A.x*B.x-A.y*B.y; } // 点积
double operator ^ (Point A, Point B){ return A.x*B.y-A.y*B.x; } // 叉积
double Dot(Point A, Point B) { return A.x*B.x + A.y*B.y; } // 点积
double Cross(Point A, Point B) { return A.x*B.y-A.y*B.x; } // 叉积
double Length(Point A) { return sqrt(Dot(A, A)); } // 向量长度
double dis(Point a,Point b) { return sqrt( (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y) ); }
Line qq;
bool check(Segment A,Line B)
{
Point a=A.a; Point b=A.b;
Point c=B.a; Point d=B.b;
if(Cross(a-c,a-d)*Cross(b-c,b-d)> ) return ;
else return ;
return ;
}
Point make(Segment A,Line B)
{
Point a=A.a; Point b=A.b;Point c=B.a; Point d=B.b;
double A1=b.y-a.y,B1=-(b.x-a.x),C1=b.y*a.x-b.x*a.y;
double A2=d.y-c.y,B2=-(d.x-c.x),C2=d.y*c.x-d.x*c.y;
double k=A1*B2-A2*B1;
double x=-(B1*C2-C1*B2)*1.000000000/k;
double y=(A1*C2-C1*A2)*1.00000000/k;
Point kk; kk.x=x; kk.y=y; return kk;
}
double dfs(double l,int k,int d,Point x,double ff)
{
if(k==d) return ;
double ans=;
Segment x1;
x1.a=x;
x1.b.x=x.x+l*sin(ff); x1.b.y=x.y+l*cos(ff);
Point W;
W.x=x.x+l*sin(ff); W.y=x.y+l*cos(ff);
if(check(x1,qq)==)
{
ans+=l;
ans+=dfs(l/,k+,d,W,ff-TT);
ans+=dfs(l/,k+,d,W,ff);
ans+=dfs(l/,k+,d,W,ff+TT);
}
else
{
Point P=make(x1,qq); ans+=dis(x,P);
}
return ans;
}
void work(double l,int d)
{
Segment x1;
x1.a.x=; x1.a.y=;
x1.b.x=; x1.b.y=l;
double ans=;
Point W; W.x=; W.y=l;
if(check(x1,qq)==)
{
ans+=l;
ans+=dfs(l/,,d,W,-TT);
ans+=dfs(l/,,d,W,);
ans+=dfs(l/,,d,W,TT);
}
else
{
Point x;
x.x=;
x.y=;
Point P=make(x1,qq); ans+=dis(x,P);
}
cout<<ans<<endl;
}
int main()
{
cout<<fixed<<setprecision();
int T; cin>>T;
while(T--)
{
int d;
double l,x1,y1,k; cin>>l>>d>>x1>>y1>>k;
qq.a.x=x1; qq.a.y=y1;
qq.b.x=x1+; qq.b.y=y1+k*;
work(l,d);
}
}

2019南昌邀请赛 L 计算几何 G(待补)的更多相关文章

  1. 2019南昌邀请赛网络预选赛 M. Subsequence

    传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...

  2. 2019南昌邀请赛网络预选赛 J.Distance on the tree(树链剖分)

    传送门 题意: 给出一棵树,每条边都有权值: 给出 m 次询问,每次询问有三个参数 u,v,w ,求节点 u 与节点 v 之间权值 ≤ w 的路径个数: 题解: 昨天再打比赛的时候,中途,凯少和我说, ...

  3. 2019南昌邀请赛网络预选赛 I. Max answer(单调栈+暴力??)

    传送门 题意: 给你你一序列 a,共 n 个元素,求最大的F(l,r): F(l,r) = (a[l]+a[l+1]+.....+a[r])*min(l,r); ([l,r]的区间和*区间最小值,F( ...

  4. POJ-2796 & 2019南昌邀请赛网络赛 I. 区间最大min*sum

    http://poj.org/problem?id=2796 https://nanti.jisuanke.com/t/38228 背景 给定一个序列,对于任意区间,min表示区间中最小的数,sum表 ...

  5. 2019南昌邀请赛网络赛:J distance on the tree

    1000ms 262144K   DSM(Data Structure Master) once learned about tree when he was preparing for NOIP(N ...

  6. [2019南昌邀请赛网络赛D][dp]

    https://nanti.jisuanke.com/t/38223 Xiao Ming recently indulges in match stick game and he thinks he ...

  7. 2019南昌邀请赛预选赛 I. Max answer (前缀和+单调栈)

    题目:https://nanti.jisuanke.com/t/38228 这题题解参考网上大佬的. 程序的L[i],R[i]代表a[i]这个点的值在区间 [L[i],R[i]] 中最小的并且能拓展到 ...

  8. 2019南昌邀请赛 C. Angry FFF Party 大数矩阵快速幂+分类讨论

    题目链接 https://nanti.jisuanke.com/t/38222 题意: 定义函数: $$F(n)=\left\{\begin{aligned}1, \quad n=1,2 \\F(n- ...

  9. 南昌邀请赛网络赛 D.Match Stick Game(dp)

    南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...

随机推荐

  1. BPM与OA区别

    核心差异: OA解决的是流程有无问题 BPM解决的是流程更好更优的问题 主要差异如下: 1.BPM有更好的广度跟深度 这里的广度是指应用场景的广度. BPM一般都会以端到端的方式衔接企业运营过程的上下 ...

  2. python 数据分析--pandas

    接下来pandas介绍中将学习到如下8块内容:1.数据结构简介:DataFrame和Series2.数据索引index3.利用pandas查询数据4.利用pandas的DataFrames进行统计分析 ...

  3. OSI,TCP/IP,五层协议的体系结构,以及各层协议

    OSI分层 (7层):物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. TCP/IP分层(4层):网络接口层. 网际层.运输层. 应用层. 五层协议 (5层):物理层.数据链路层.网络层. ...

  4. Windows挂载NFS共享盘

    Centos7添加NFS方法请见如下链接: https://www.cnblogs.com/jackyzm/p/10285845.html 一:添加NFS服务 1.1:此电脑-右键-管理-window ...

  5. TCP聊天工具的实现

    由于本人天生愚钝,所以关于聊天工具的编程一直都没学会,尽管网上教程一大堆,但是关于IdTCPClient  IdTCPServer 的不多,今天终于学会一些,分享给像我一样纠结的小伙伴,下一步学习多线 ...

  6. Jsの练习-数组常用方法 -forEach()

    forEach()  : 对数组进行遍历循环,对数组中的每一项运行给定函数. 格式: arr.forEach(function(value,index){}) <!DOCTYPE html> ...

  7. Note of Jieba

    Note of Jieba jieba库是python 一个重要的第三方中文分词函数库,但需要用户自行安装. 一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容 ...

  8. spring-data-mongodb 使用原生aggregate语句

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

  9. CG-ctf WP

    week one 1 /x00 提示:有多种解法,你能找到几种 源码: writer up: 题目直接给出了源码,get 到一个 nctf 这个变量,int ereg(string pattern, ...

  10. TCP学习总结(一)

    在学习的过程中,相信大家都有过“学了就忘“这种经历,又特别是TCP/IP知识点密集的通信协议,所以在此总结一下自己学到的皮毛,希望对自己对大家也有所帮助. 这篇博客主要讲运输层TCP和UDP的东西,I ...