NOIP 考前 计算几何练习

BZOJ 1580

直接解析算出每段的时间然后模拟即可

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <queue>
 6 #include <vector>
 7 #include <cmath>
 8 #define Pa pair<double,double>
 9 #define mp make_pair
10 #define pb push_back
11 #define se second
12 #define fi first
13
14 using namespace std;
15 const int Maxn=50100;
16 const int Inf=0x3f3f3f3f;
17 int n,R,X,Y,Vx,Vy,P[Maxn],Q[Maxn],Vp[Maxn],Vq[Maxn],Ans;
18 vector<Pa> V;
19 inline int Sqr(int x) {return x*x;}
20 inline double Max(double x,double y) {return x>y?x:y;}
21 int main()
22 {
23     // freopen("c.in","r",stdin);
24     scanf("%d%d%d%d%d%d",&n,&R,&X,&Y,&Vx,&Vy);
25     for (int i=1;i<=n;i++)
26     {
27         scanf("%d%d%d%d",&P[i],&Q[i],&Vp[i],&Vq[i]);
28         P[i]-=X,Q[i]-=Y,Vp[i]-=Vx,Vq[i]-=Vy;
29     }
30     for (int i=1;i<=n;i++)
31         if (Vp[i]==0 && Vq[i]==0)
32         {
33             if (Sqr(P[i])+Sqr(Q[i])<=Sqr(R))
34                 V.pb(mp(0,Inf));
35         } else
36         {
37             double Dis=-(P[i]*Vp[i]+Q[i]*Vq[i])/sqrt((Sqr(Vp[i])+Sqr(Vq[i])));
38             if (R*R>=(double)Sqr(P[i])+(double)Sqr(Q[i])-Dis*Dis)
39             {
40                 double tmp=sqrt(R*R-Sqr(P[i])-Sqr(Q[i])+Dis*Dis);
41                 V.pb(mp(Max(Dis-tmp,0.0)/sqrt(Sqr(Vp[i])+Sqr(Vq[i])),(Dis+tmp)/sqrt(Sqr(Vp[i])+Sqr(Vq[i]))));
42             }
43         }
44
45     sort(V.begin(),V.end());
46     priority_queue<double> T;
47
48     for (int i=0;i<V.size();i++)
49     {
50         T.push(-V[i].se);
51         while (!T.empty() && -T.top()<V[i].fi) T.pop();
52         Ans=Max(Ans,T.size());
53     }
54     printf("%d\n",Ans);
55     return 0;
56 }

BZOJ 1580

时间: 2024-11-03 05:39:03

NOIP 考前 计算几何练习的相关文章

NOIP考纲总结+NOIP考前经验谈

NOIP考纲总结+NOIP考前经验谈 首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 c.乘法(应该只会有高精乘单精) d.高精度除单精                 (后面c,d考的可能性较小,应该只考a,b) 排序算法 a.选择排序 b.插入排序 c.hash排序 d.归并排序(单纯的排序可能用不到,有快排就行了,但是归并排序的思想很重要)

【NOIP考前模拟赛】纯数学方法推导——旅行者问题

一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取.另外博主使用此题并没有获得出题人授权,如果出题人看到这篇blog并认为在下侵犯了您的权利,请用站内消息与在下联系,在下会立即删除这篇blog,给您带来的困扰之处敬请谅解. 博主上传这道题主要是因为这题牵扯许多数学运算,推导过程比较复杂,但是却没有用到任何算法或者数学定理,可以说这是一道想法题的典范.

NOIP 考前 队列复习

BZOJ 1127 1 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #define M 2020 7 using namespace std; 8 int n,k,a[M][M]; 9 long long sum[M][M]; 10 long long Get_Sum(int x1,int y1,int x2,int y2) 1

NOIP 考前 暴力练习

BZOJ 1028 暴力枚举听的那张牌,和那个多余的两张牌,其余的mod3后模拟就可以了 1 #include <cstdio> 2 const int Maxn=510; 3 int n,m,a[Maxn],b[Maxn],cnt,Ans[Maxn],x; 4 bool Check() 5 { 6 for (int i=1;i<=n;i++) 7 if (a[i]>=2) 8 { 9 for (int j=1;j<=n+2;j++) b[j]=a[j]; 10 b[i]-=

NOIP 考前 图论练习

LJOJ 1500: 题目:http://www.docin.com/p-601990756.html Sol:贪心,从叶子结点往上加入无法传递了,就需要建设. Dfs返回的是到达叶子节点最多所要的能量,如果大于最大能量就需要建设放大器. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <algorithm> 5 const int Maxn=100100;

NOIP 考前 数据结构复习

BZOJ 1455 左偏树即可 1 #include <cstdio> 2 #define LL long long 3 const LL Maxn=1000100; 4 struct Info{LL l,r,v,Dis;}Tree[Maxn]; 5 LL Father[Maxn],n,m,Dead[Maxn],u,v; 6 inline void Swap(LL &x,LL &y){LL t=x;x=y;y=t;} 7 LL Get(LL x) {return x==Fath

NOIP 考前 数论复习

POJ 2891 x=r1 (mod a1) x=r2 (mod a2) x=a1*x+r1,x=a2*y+r2; a1*x-a2*y=r2-r1; 用Extend_Gcd求出m1*x+m2*y=d; d=Gcd(x,y); 那么就可以解出原来的x=(x*(r2-r1)/d) 那么代入原式r1=a1*x+r1 新的a1=lcm(a1,a2); 1 #include <cstdio> 2 #define LL long long 3 LL a1,a2,r1,r2,x,y,n; 4 LL Exte

NOIP考前临时抱佛脚(算是考前日记吧)

谨以此祭奠我即将爆炸的NOIP2017. $Mingqi\_H\ \ 2017.09.24$ Day -47 突然发现半年来自己从来没有写对过SPFA,最近几天才发现自己的板子一直是错的...赶紧找个例题修一下板子: 1 #include<cstring> 2 #include<cstdio> 3 #include<queue> 4 using namespace std; 5 const int maxn = 1e6+10; 6 struct Edge{ 7 int

NOIP考前注意事项

1.如果遇到需要处理小数(无论什么情况,只要出现了小数),空间足够的情况下用double,详见NOIP2016D2T2蚯蚓,不开double炸穿天. 2.计数时输出结果时用long long. 3.邻接链表存储图的时候first数组初始值一定要memset为-1. 4.数组开够就行了. 5.1既不是素数也不是合数 7.树状数组的lowbit(int x)返回的是x&(-x)而不是(-x)&x 8.在写线段树的时候如果要加lazy标记,则每遍历到一个新的点则应该更新其lazy标记 9.当需要