我的第一个半平面交(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]水平可见直线) 的相关文章

  • 如果输入等于字符串,则执行某些操作... python 2.7 [重复]

    这个问题在这里已经有答案了 使用以下代码时遇到问题 start over 1 question input Do you wish to try again y n if question y start over 1 else raise
  • 宽度为 100% 的 HTML 输入文本框溢出表格单元格

    有谁知道为什么宽度为 100 的输入元素会超出表格的单元格边框 在下面的简单示例中 输入框越过表格的单元格边框 结果非常糟糕 这已经过测试 并且在 Firefox IE7 和 Safari 上以相同的方式发生 这对你来说有意义吗 我错过了什
  • 如何在 Python 中将输入打印为整数、浮点数或字符串

    我的代码的目的是让输出给出输入的数字和类型 例如 如果输入是 10 输出应该是 10 is an integer 如果输入是 10 0 输出应该是 10 0 is a float 如果输入是 Ten 输出应该是 Ten is a strin
  • Fortran:向文件添加列(即跳过不同数量的水平空格)

    我是 Fortran f90 的初学者 一些看似简单的问题结果却导致严重头痛 感谢您帮助我解决这个问题 我的代码运行一个循环 处理数据并将它们写入文件 我希望将这些数据写入同一文件的列中 直到循环完成 OPEN unit 11 file f
  • 保持java套接字打开?

    我正在制作一个会自动更新的程序 游戏 我有更新部分 但没有检查版本 我本以为这会很容易 这就是我所做的 我为游戏编写了一个更新程序 并且编写了一个服务器 每次客户端 更新程序连接时 服务器都会启动一个线程 线程处理一切 游戏更新程序读取一个
  • 键盘覆盖了 webapp 中的文本输入(iOS)

    我正在开发一个网络应用程序 屏幕下半部分有两个输入字段 父视图绝对定位于屏幕 通常 人们会假设单击输入字段时 焦点会强制输入进入键盘上方的视图 但是 键盘覆盖了输入字段 如果我开始打字 则该字段中不会输入任何内容 为了在字段中输入内容 我必
  • jQuery Mobile 将下一个输入集中在按键上

    我有一个 jquery 移动网站 其 html 表单由 4 个引脚输入框组成 我希望用户能够在每个输入字段中输入 pin 而不必按 iphone 键盘的 下一步 按钮 我尝试了以下操作 虽然它似乎将焦点设置到第二个输入并插入值 但键盘消失了
  • Jquery:按下输入类型=提交时防止重新加载页面

    我在 MVC 3 Razor 项目中有以下代码 div class user info div
  • C# 相当于 Java 的 scn.nextInt( )

    在Java中 如果我们想从控制台读取用户输入 我们可以执行以下操作 Scanner scn new Scanner System in int x x scn nextInt Receive integer input 在 C 中 我假设我
  • 类型错误:“str”对象无法使用 input() 调用[重复]

    这个问题在这里已经有答案了 我有以下代码 它应该询问用户 2 文件名 我在第二个函数中的 input 中遇到错误 但在第一个函数中没有 我不明白 这是错误 输出 getOutputFile 文件 splitRAW py 第 22 行 位于
  • 如何在maven antrun插件中执行输入任务

    我创建了一个 Maven 项目 我正在尝试运行外部脚本 在此外部脚本中 我使用 read 命令来提出问题并获得答案 如果我做一个 它会起作用sudo mvn 包 with 执行 maven 插件 http www mojohaus org
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • 字典条目被覆盖? [复制]

    这个问题在这里已经有答案了 我发现一些输入没有存储在 Python 3 的字典中 运行这段代码 N int input How many lines of subsequent input graph for n in range N st
  • 我如何知道哪个 /dev/input/eventX (X=0..7) 有 Linux 输入流?

    我正在尝试捕获 Linux 键盘 鼠标输入 并且我正在读取类似的事件 dev input event2 但似乎输入有时会定向到 dev input event2 有时到 dev input event3 我想知道是否有一个地方可以找出哪个流
  • Ember.js 输入字段

    是否可以在 Ember js 视图中使用标准 HTML5 输入字段 或者您是否被迫使用 Ember TextField Ember CheckBox Ember TextArea 和 Ember select 等内置字段的有限选择 我似乎无
  • 使用 JavaScript 或 jQuery 设置文本框的最大长度

    我想用 JavaScript 或 jQuery 更改文本框的最大长度 我尝试了以下方法 但似乎没有帮助 var a document getElementsByTagName input for var i 0 i
  • 如何处理错误的数据类型输入

    在C 中 如何处理错误的输入 例如 如果程序要求输入一个整数 那么当您键入一个字符时 它应该能够执行某些操作 然后循环重复输入 但是当您在需要整数时输入一个字符时 循环会无限循环 反之亦然 程序进入死循环的原因是std cin由于输入失败而
  • 使用 jQuery/JavaScript 将文本框值复制到剪贴板

    我有一个文本框和按钮 如下所示 div class col xs 11 style padding 20px 0 div
  • 将一个文本框的值分配给另一个文本框

    看过类似问题的答案 但对于我的一生 我无法弄清楚我做错了什么 我有两个文本框和一个按钮 当文本添加到第一个文本框并按下按钮时 我想将第一个文本框的值 文本应用到第二个文本框
  • 有没有办法改变输入类型=“日期”格式?

    默认情况下 输入type date 显示日期为YYYY MM DD 问题是 是否可以将其格式强制为 DD MM YYYY 无法更改格式 我们必须区分有线格式和浏览器的表示格式 接线格式 The HTML5日期输入规范 https www w

随机推荐

  • 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