BZOJ 1007 几何 解题报告
2017-08-27 17:13
239 查看
1007: [HNOI2008]水平可见直线
Description
在xoy直角坐标平面上有n条直线L1,L2,…Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为
可见的,否则Li为被覆盖的.
例如,对于直线:
L1:y=x; L2:y=-x; L3:y=0
则L1和L2是可见的,L3是被覆盖的.
给出n条直线,表示成y=Ax+B的形式(|A|,|B|<=500000),且n条直线两两不重合.求出所有可见的直线.
Input
第一行为N(0 < N < 50000),接下来的N行输入Ai,Bi
Output
从小到大输出可见直线的编号,两两中间用空格隔开,最后一个数字后面也必须有个空格
Sample Input
3
-1 0
1 0
0 0
Sample Output
1 2
【解题报告】
不解释
代码如下:
Description
在xoy直角坐标平面上有n条直线L1,L2,…Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为
可见的,否则Li为被覆盖的.
例如,对于直线:
L1:y=x; L2:y=-x; L3:y=0
则L1和L2是可见的,L3是被覆盖的.
给出n条直线,表示成y=Ax+B的形式(|A|,|B|<=500000),且n条直线两两不重合.求出所有可见的直线.
Input
第一行为N(0 < N < 50000),接下来的N行输入Ai,Bi
Output
从小到大输出可见直线的编号,两两中间用空格隔开,最后一个数字后面也必须有个空格
Sample Input
3
-1 0
1 0
0 0
Sample Output
1 2
【解题报告】
不解释
代码如下:
/************************************************************** Problem: 1007 User: onepointo Language: C++ Result: Accepted Time:276 ms Memory:25236 kb ****************************************************************/ #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; #define eps 1e-8 #define N 1000010 int n,s ; bool ans ; struct Line { double k,b; int id; friend bool operator < (const Line &a,const Line &b) { return (a.k!=b.k)?a.k<b.k:a.b>b.b; } }l ; double getpos(Line a,Line b) { return (b.b-a.b)/(a.k-b.k); } int main() { scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%lf%lf",&l[i].k,&l[i].b); l[i].id=i; } sort(l+1,l+1+n); int top=1;s[1]=1; for(int i=2;i<=n;++i) { if(l[i].k-l[i-1].k<eps) continue; while(top>1&&getpos(l[i],l[s[top]])<=getpos(l[s[top]],l[s[top-1]])) top--; s[++top]=i; } for(int i=1;i<=top;++i) ans[l[s[i]].id]=1; for(int i=1;i<=n;++i) if(ans[i]) printf("%d ",i); return 0; }
相关文章推荐
- BZOJ 1913 计算几何+排列组合 解题报告
- BZOJ 1356 计算几何 解题报告
- bzoj1337 最小圆覆盖 计算几何 解题报告
- BZOJ 1337 计算几何 解题报告
- BZOJ 1822 计算几何+网络流+二分答案 解题报告
- BZOJ 1502 计算几何+自适应Simpson积分 解题报告
- bzoj1500 [NOI2005]维修数列解题报告
- BZOJ 2124 树状数组+Hash 解题报告
- (全网最详细!)bzoj 2548 灭鼠行动 模拟 解题报告
- BZOJ 3193 [JLOI 2013] 计数DP 解题报告
- BZOJ5071[Lydsy十月月赛] 小A的数字 解题报告
- BZOJ 2142 礼物 拓展Lucas 解题报告
- [bzoj4025]二分图 解题报告
- bzoj 1565 [NOI2009]植物大战僵尸 解题报告
- [Usaco2011][bzoj2442][洛谷2527]修剪草坪解题报告(dp,贪心,单调队列)
- POJ 1007 DNA Sorting [解题报告] Java
- [BZOJ2243][SDOI2011]染色 解题报告|树链剖分
- BZOJ 1072 [SCOI 2007] 状压DP 解题报告
- [BZOJ1026][SCOI2009]windy数 解题报告|数位dp
- BZOJ 3983 Takeover Wars 解题报告