Uva-Live 3905-Meteor
2013-03-20 12:24
316 查看
要求求出最多能看到多少流行,计算流行进入和出去的时间,然后排序遍历一次即可。
代码:
代码:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=1e6; int w,h,n,e; struct node { double t; int type; bool operator < (const node &a) const { return t==a.t?type>a.type:t<a.t; } }eve[maxn]; void update(int x,int v,int w,double &L,double &R) { if(v==0) { if(x<=0||x>=w) R=L-1; } else if(v>0) { L=max(L,-(double)x/v); R=min(R,(double)(w-x)/v); } else { L=max(L,(double)(w-x)/v); R=min(R,-(double)x/v); } } int main() { int cas; scanf("%d",&cas); while(cas--) { e=0; scanf("%d%d%d",&w,&h,&n); for(int i=0;i<n;i++) { int x,y,a,b; scanf("%d%d%d%d",&x,&y,&a,&b); double L=0,R=1e8; update(x,a,w,L,R); update(y,b,h,L,R); if(R>L) { eve[e++]=(node){L,0}; eve[e++]=(node){R,1}; } } sort(eve,eve+e); int ans=0,cnt=0; for(int i=0;i<e;i++) { if(eve[i].type==0) ans=max(ans,++cnt); else cnt--; } printf("%d\n",ans); } return 0; }
相关文章推荐
- UVALive - 3905 Meteor 统计
- 【UVALive 3905】BUPT 2015 newbie practice #2 div2-D-3905 - Meteor
- UVALive 3905-Meteor-扫描线算法
- UVALive - 3905 —— Meteor 流星
- Meteor UVALive - 3905 (区间扫描)
- UVaLive 3905 Meteor (扫描线)
- UVALive - 3905 [Meteor]
- uvalive 3905 扫描线:求包含区间最多的点
- uvalive3905(扫描法)
- UVALive3905 流星
- UVALive(LA) 3644 X-Plosives (并查集)
- UVALive - 7636 Rational Grading
- UVaLive 3177 Beijing Guards,CERC 2004,LA3117 题解
- UVALive - 7831 :ACM Tax (主席树求树路径上中位数:LCA+主席树)
- UVALive 4043 Ants
- UVALive-7197 Axles 动态规划 多个背包问题
- UVALive 3907 (LA 3907) Puzzle AC自动机 + 搜索DP 记录路径
- UVALive-7374-Racing Gems(最长上升子序列O(n*logn))
- uvalive 3983(dp)
- Error Curves(三分)uvalive 5009 求下凸 (最大值的最小值)