2019南昌邀请赛 L 计算几何 G(待补)
#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(待补)的更多相关文章
- 2019南昌邀请赛网络预选赛 M. Subsequence
传送门 题意: 给出一个只包含小写字母的串 s 和n 个串t,判断t[i]是否为串 s 的子序列: 如果是,输出"YES",反之,输出"NO": 坑点: 二分一 ...
- 2019南昌邀请赛网络预选赛 J.Distance on the tree(树链剖分)
传送门 题意: 给出一棵树,每条边都有权值: 给出 m 次询问,每次询问有三个参数 u,v,w ,求节点 u 与节点 v 之间权值 ≤ w 的路径个数: 题解: 昨天再打比赛的时候,中途,凯少和我说, ...
- 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( ...
- POJ-2796 & 2019南昌邀请赛网络赛 I. 区间最大min*sum
http://poj.org/problem?id=2796 https://nanti.jisuanke.com/t/38228 背景 给定一个序列,对于任意区间,min表示区间中最小的数,sum表 ...
- 2019南昌邀请赛网络赛:J distance on the tree
1000ms 262144K DSM(Data Structure Master) once learned about tree when he was preparing for NOIP(N ...
- [2019南昌邀请赛网络赛D][dp]
https://nanti.jisuanke.com/t/38223 Xiao Ming recently indulges in match stick game and he thinks he ...
- 2019南昌邀请赛预选赛 I. Max answer (前缀和+单调栈)
题目:https://nanti.jisuanke.com/t/38228 这题题解参考网上大佬的. 程序的L[i],R[i]代表a[i]这个点的值在区间 [L[i],R[i]] 中最小的并且能拓展到 ...
- 2019南昌邀请赛 C. Angry FFF Party 大数矩阵快速幂+分类讨论
题目链接 https://nanti.jisuanke.com/t/38222 题意: 定义函数: $$F(n)=\left\{\begin{aligned}1, \quad n=1,2 \\F(n- ...
- 南昌邀请赛网络赛 D.Match Stick Game(dp)
南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...
随机推荐
- Mvc请求的生命周期
ASP.NET Core : Mvc请求的生命周期 translation from http://www.techbloginterview.com/asp-net-core-the-mvc-req ...
- 基于mykernel完成多进程的简单内核
学号351 原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ mykernel简介 mykernel是由孟宁老师建立的一个用于开发您自己的操 ...
- 五、docker网络技术
五 docker网络技术 1.本章环境: 源码文件目录: 2.网络基础回顾 通道: NAT将私有地址和端口号翻译成公有的地址和端口号项某网站发出数据包.某网站根据数据表查出私有ip和端口号返回数据. ...
- node.js学习二---------------------同步API和异步API的区别
/** * node.js大部分api都有同步的方法,同步方法名后面都会带有Sync,js编译的时候,同步代码会立即执行,异步代码会先存到异步池中,等同步代码执行完后它才会执行异步:不会阻塞线程,没有 ...
- WordCount程序与测试
Github地址: https://github.com/hcy6668/wordCount PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 40 ...
- QT_REQUIER_CONFIG
在qglobal.h中,定义了很多宏.下面这个QT_REQUIER_CONFIG,展开成: #define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(Q ...
- call Apply bind详解
call方法: 语法:call(thisObj,'',''........) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 说明:call方法可以用来代替另一个对象调用一个方法.call方法 ...
- [模板] 树状数组 (C++ class)
闲来无事(其实是打了两三道树状数组题),写了个树状数组模板…… /* Author: hotwords */ template<typename tp> class BinTree { p ...
- HTML表格布局
1 浏览器:接受浏览者的操作,然后帮浏览者去web服务器请求网页内容,然后展现成人人眼能够看得懂的可视化页面的软件. 2 IE是浏览器的一种.<ietest工具& ...
- Graphics Class
System.Drawing 封装一个 GDI+ 绘图图面. 此类不能被继承. https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.g ...