我的第一个半平面交(1007: [HNOI2008]水平可见直线)

2023-11-11

点击打开链接

Description

Input

第一行为N(0 < N < 50000),接下来的N行输入Ai,Bi

Output

从小到大输出可见直线的编号,两两中间用空格隔开.

Sample Input

3
-1 0
1 0
0 0

Sample Output

1 2
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
首先处理直线将斜率相同的按B值得大小排序,大的在上,小的在下,只需判断斜率是否相同,如果相同,直接跳过,否则判断交点,stack数组装的是可见直线的id(排序后的),如果stack的顶部和第二个直线的交点与当前的直线和stack顶部的比横坐标小就装入stack中,否则,stack,弹出栈顶元素;反复操作;


#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
	double a,b;
	int d;
}line[50008];
int cmp(node x,node y)
{
	if(x.a==y.a)
	return x.b>y.b;
	return x.a<y.a;
}
int stack[50008],stack2[50008];

int main()
{
	int n,i,j,k,m,d;
	scanf("%d",&m);
	for(i=0;i<m;i++)
	{scanf("%lf%lf",&line[i].a,&line[i].b);
	line[i].d=i+1;}
	sort(line,line+m,cmp);
	stack[0]=0;
	i=1;d=1;
	while(i<m)
	{
		if(line[i].a!=line[i-1].a)
		break;
		i++;
	}
	stack[d++]=i;
	for(;i<m;i++)
	{
		if(line[i].a==line[stack[d-1]].a)
		continue;
		double aa=line[i].a,bb=line[i].b;
		while(1)
		{
			if(d==1)
			{stack[d++]=i;
			break;}
			double cc=line[stack[d-1]].a,dd=line[stack[d-1]].b;
			double ee=line[stack[d-2]].a,ff=line[stack[d-2]].b;
            double x=(dd-bb)/(aa-cc),y=(ff-bb)/(aa-ee);
			if(x>y)
			{stack[d++]=i;break;}
			else 
			d--;
		}
	}
	for(i=0;i<d;i++)
	stack2[i]=line[stack[i]].d;
	sort(stack2,stack2+d);
	for(i=0;i<d-1;i++) 
	printf("%d ",stack2[i]);
	printf("%d\n",stack2[d-1]);
	return 0;
}



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的第一个半平面交(1007: [HNOI2008]水平可见直线) 的相关文章

随机推荐

  • win10计算机程序员怎么用,如何用好 Windows 10 中的多功能「计算器」应用程序

    从 1985 年 Microsoft 首次推出 Windows 1 0 以来 至今 系统内置的 Widows 计算器已经走过了漫长的功能扩展道路 Windows 10 的多功能 计算器 针对不同用户和使用场景 内置了多种功能模式 其中就包括
  • C# 三菱FX PLC XYS读写,串口读写

    花了两三天写了一个这个 本来想着自己用的 看到有很多替代品 果断开源了吧 下载地址 https github com t39q MitsubishiFX PLC XYS 以下是原理 后面有帮助类和调用方法 调用方法 private void
  • Python通过私信消息提取博主的赠书活动地址

    文章目录 前言 背景 设计 开发 1 引入模块 2 获取私信内容 3 根据文本提取url的方法 4 获取包含 书 的url 5 程序入口 效果 总结 最后 前言 博主 空空star 主页 空空star的主页 大家好 我是空空star 本篇给
  • java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片

    Java教程 HTML5 Canvas绘制简单图片 0 2016 05 13 13 00 04 获取Image对象 new出来 定义Image对象的src属性 参数 图片路径 定义Image对象的onload方法 调用context对象的d
  • 图的深度优先遍历和广度优先遍历

    1 深度优先遍历 DFS 1 从某个顶点V出发 访问顶点并标记为已访问 2 访问V的其中一个邻接点 通常最左边的那个 如果没有访问过 访问该顶点并标记为已访问 然后再访问该顶点的邻接点 递归执行 先一直往后走 如果该顶点已访问过 退回上一个
  • CAD快捷键——标注类

    CAD快捷键 标注类 直线标注 DLI 空格 斜线标注 DAL 空格 半径标注 DRA 空格 直径标注 DDI 空格 角度标注 DAN 空格 连续标注 DCO 空格 快速连续标注 QDIM 空格 中心标注 DCE 空格 直线标注 DLI 空
  • Windows下的开发辅助神器——Chocolate Package Manager

    对于开发人员而言 搭建开发环境是所有开发环节中的第一步 然而在Windows环境下 各种安装工具 软件版本五花八门 而且容易下载到病毒软件 因此对于初学者来说 下载到正确的开发软件 搭建好开发环境还是有一定难度和技巧性的 Chocolate
  • [已解决]ROS无法连接raw.githubusercontent.com和raw.github.com的问题

    首先通过以下网站查询raw githubusercontent com和raw github com对应的IP https tool lu ip 复制上面的IP 然后通过下面命令打开hosts修改源 sudo vi etc hosts 以下
  • Spring Boot参考教程(七)Spring Boot Jar方式读取资源文件

    5 Spring Boot Jar方式读取资源文件 在2 2 2章节中已说明SpringBoot的一个特性就是独立运行 内嵌Servlet容器 在Spring Boot工程以jar方式独立运行开发时会遇到一些问题 本章节主要说明读取静态资源
  • Reformer RoPE,旋转位置编码,关于Transformer当中的位置编码的优化考察

    1 工作简介 这篇文章是苏剑林的一篇关于Transformer当中的位置编码的优化考察 众所周知 transformer的attention机制本身是不带有位置信息的 因此对于文本序列 attention机制本身就会丢失掉原文当中的序列信息
  • Python二叉树构建(完全二叉树)

    Python完全二叉树的构建 包含广度优先插入节点 广度遍历 先序 中序 后序遍历等函数 class Node object 节点 def init self item self elem item self lchild None sel
  • 【AI目标检测】MMROTATE踩坑记录

    MMROTATE介绍 MMRotate 是一款基于 PyTorch 的旋转框检测的开源工具箱 是 OpenMMLab 项目的成员之一 MMROTATE安装 mmrotate的安装同mmdet等类似 参考mmrotate安装 创建环境 con
  • 单调栈和滑动窗口【题解】

    全文目录 单调栈 代码 滑动窗口 单调队列 代码 单调栈 单调栈 顾名思义就是具有单调性的栈 通常是用来求数组中的左边第一个比自身小或者大的数 使用场景还是比较有限的 但是对于解题还是有着很大的帮助的 我们还是通过题目来进行讲解 对于这种题
  • php一个字段多条件查询,ThinkPHP使用数组条件进行查询之同一字段多个条件

    对同一表中多个字段的查询 在thinkPHP中使用数组条件进行查询 有三个好处 第一可以批量设置多个查询字段 第二可以设置多个查询条件 第三结构化你的代码 让代码更具可读性 数组条件查询有简单数组查询 数组表达式查询 一般使用 map保存数
  • VSCode远程连接Linux服务器时遇到连接超时问题

    1 确保Linux服务器已经安装并运行了SSH服务 可以使用以下命令检查SSH服务的状态 sudo systemctl status ssh 可以设置开机自启 sudo systemctl enable ssh 2 使用ping命令检查ip
  • 快速掌握Nodejs安装以及入门

    一 Nodejs 1 1 Nodejs介绍 官网 http nodejs cn Node 是一个让 JavaScript 运行在服务端的开发平台 它让 JavaScript 成为与PHP Python Perl Ruby 等服务端语言平起平
  • LeetCode小算法记录(二十二)最长回文串

    给定一个包含大写字母和小写字母的字符串 找到通过这些字母构造成的最长的回文串 在构造过程中 请注意区分大小写 比如 Aa 不能当做一个回文字符串 注意 假设字符串的长度不会超过 1010 示例 1 输入 abccccdd 输出 7 解释 我
  • SpringBoot的完整学习

    springBoot 配置如何编写 yaml 自动装配原理 集成web开发 业务的核心 集成数据库 Druid 分布式开发 Dubbo zookeeper swagger 接口文档 任务调度 SpringSecunity Shiro 1 微
  • Fastadmin开源CRM客户管理系统融合开发呼叫中心系统

    基于Fastadmin中开源CRM客户管理系 并支持小程序端UNIapp 统融合开发呼叫中心系统 在crm管理系统中 并实现了来去电弹屏 网页通话等功能 助力企业销售全流程精细化 数字化管理 全面解决企业销售团队的全流程客户服务难题 帮助企
  • 我的第一个半平面交(1007: [HNOI2008]水平可见直线)

    点击打开链接 Description Input 第一行为N 0 lt N lt 50000 接下来的N行输入Ai Bi Output 从小到大输出可见直线的编号 两两中间用空格隔开 Sample Input 3 1 0 1 0 0 0 S