NYOJ 78 圈水池 (入门级凸包)
题目讲解:本题考查的主要是凸包的用法,算是入门级的吧,当然前提是你接触过,平面几何:
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
struct T
{
int x,y;
friend int operator < (T a, T b)
{
if((a.x<b.x) || (a.x==b.x && a.y<b.y))
return ;
return ;
}
}a[],ans[];
//用来判断第三点在当前两点构成的直线的左侧还是右侧,右侧返回值小于0;
double judge(T a, T b,T c)
{
return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
}
int main()
{
int T,m;
scanf("%d",&T);
while(T--)
{ scanf("%d",&m);
for(int i=; i<m; i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
}
sort(a,a+m);
int k1=;
for(int i=; i<m; i++)//下凸包,从下面扫描个点;
{
while(k1> && judge(ans[k1-],ans[k1-],a[i])<=)
{
k1--;
}
ans[k1++]=a[i];
}
int k2=k1;
for(int i=m-; i>=; i--)//上凸包,从上面扫描各点;
{
while(k1>k2 && judge(ans[k1-],ans[k1-],a[i])<=)
{
k1--;
}
ans[k1++]=a[i];
}
k1--;
sort(ans,ans+k1);
for(int i=; i<k1; i++)
printf("%d %d\n",ans[i].x,ans[i].y);
}
return ;
}
NYOJ 78 圈水池 (入门级凸包)的更多相关文章
- nyoj 78:圈水池 【凸包入门】
		题目链接 将所有点按从左至右顺序排序,然后将所有点先从左到右扫描再从右到左扫描,逐渐将凸包轮廓“勾勒”出来 (凸包轮廓满足,轮廓上连续的三个点按先后顺序给出的话呈逆时针方向) 最后删去一个重复的起(终 ... 
- 题解报告:NYOJ #78 圈水池(打印凸包顶点)
		描述: 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水,各个水池都标有各自的坐标,现在要你写一个程序利用最短的篱笆将这些供水装置圈起来!( ... 
- nyist 78 圈水池
		http://acm.nyist.net/JudgeOnline/problem.php?pid=78 圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一个 ... 
- NYOJ-78 圈水池,凸包裸模板!
		圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 刚做完HDU1392,就看到这个题,嗯,原代码改改就过了. 题意不多说了,会凸包的话很简单,不会也不难,这道题时限是4s ... 
- nyoj_78:圈水池(凸包入门)
		题目链接 将所有点按从左至右顺序排序,然后将所有点先从左到右扫描再从右到左扫描,逐渐将凸包轮廓"勾勒"出来 (凸包轮廓满足,轮廓上连续的三个点按先后顺序给出的话呈逆时针方向) 最后 ... 
- 圈水池 nyoj 78 凸包算法
		圈水池 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有一个牧场,牧场上有很多个供水装置,现在牧场的主人想要用篱笆把这些供水装置圈起来,以防止不是自己的牲畜来喝水, ... 
- NYOJ 圈水池
		#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ... 
- NYOJ题目27水池数目
		--------------------------------------------- 这道题有点坑,也怪我总是有点马虎,按照正常人的思维0是表示有水池啊竟然是1表示有水池,最坑的是写反了竟然还能 ... 
- 【COGS & USACO】896. 圈奶牛(凸包)
		http://cojs.tk/cogs/problem/problem.php?pid=896 我的计算几何入门题... 看了看白书的计算几何部分,,恩好嘛.. 乃们都用向量!!!! 干嘛非要将2个点 ... 
随机推荐
- Netty游戏服务器之一
			所谓磨刀不误砍柴工,所以在搭建netty游戏服务器之前,我们先要把要准备的东西做好. 首先进入netty的官网下载最新版本的netty的jar包,http://netty.io/downloads.h ... 
- void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别?
			void fun() const{}; const void fun(){}; 和void const fun(){}; 的区别? const void fun(){};和void const fun ... 
- 二十四种设计模式:模板方法模式(Template Method Pattern)
			模板方法模式(Template Method Pattern) 介绍定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.Template Method使得子类可以不改变一个算法的结构即可重定义该算法 ... 
- python学习:基础概念
			Python 包管理工具解惑 python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑).主要表现在下面几个方面: 这几个包管理工具有什么不同? ... 
- sparkStreaming读取kafka的两种方式
			概述 Spark Streaming 支持多种实时输入源数据的读取,其中包括Kafka.flume.socket流等等.除了Kafka以外的实时输入源,由于我们的业务场景没有涉及,在此将不会讨论.本篇 ... 
- vue - .babelrc
			描述:bable-es2015以及babel本身组件在新版本要求的外部配置文件. { "presets": [ ["env", { "modules& ... 
- Unity3D入门基础之游戏对象 (GameObject) 和组件 (Component) 的关系
			原文出处:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheGameObject-ComponentRela ... 
- 算法笔记_159:算法提高 第二大整数(Java)
			目录 1 问题描述 2 解决方案 1 问题描述 问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来 ... 
- php求斐波那契数列
			<?php function feibonaqi(){ //参数$num表示为第$num个数之前的所有斐波那契数列 $arr = array(); //定义一个空变量用来存放斐波那契数列的数组 ... 
- taro 创建 Tabbar
			1.代码 src/app.js import '@tarojs/async-await' import Taro, { Component } from '@tarojs/taro' import H ... 
