没看题解,搜了一下都是什么叉积凸包,根本没有必要用吧。。

显然这个题我们找夹角就可以了,根据高中的公式 a·b=|a|*|b|*cos<a,b>

所以用点积找一个 cos<a,b> 最小的角就可以了。

一发ac稳得一批

 #include <cstdio>
#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
typedef double db;
const db eps=1e-;
const db pi=acos(-);
int sign(db k){
if (k>eps) return ; else if (k<-eps) return -; return ;
}
int cmp(db k1,db k2){return sign(k1-k2);}
struct point{
db x,y;int id;
point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};}
point operator - (const point &k1) const{return (point){x-k1.x,y-k1.y};}
point operator * (db k1) const{return (point){x*k1,y*k1};}
point operator / (db k1) const{return (point){x/k1,y/k1};}
db abs(){return sqrt(x*x+y*y);}
};
db cross(point k1,point k2){ return k1.x*k2.y-k2.x*k1.y;}
db dot(point k1,point k2){ return k1.x*k2.x+k1.y*k2.y;}
int t,n;
point p[];
bool cmp2(point a,point b){
return a.y<b.y;
}
vector <point>ans;
int vis[];
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n;
for(int i=;i<=n;i++){
cin>>p[i].id>>p[i].x>>p[i].y;
}
sort(p+,p++n,cmp2);
p[].x=,p[].y=p[].y;
ans.push_back(p[]);
ans.push_back(p[]);
vis[]=;
for(int i=;i<=n;i++){
int m=ans.size();
point now = ans[m-]-ans[m-];//之前的向量,找最小左偏。 int id=-;
db mn=-;
for(int j=;j<=n;j++){
if(vis[j])continue;
point tmp = p[j]-ans[m-];
db c = dot(tmp,now)/tmp.abs()/now.abs();
if(cmp(c,mn)==){
//printf("%lf %lf\n",tmp.x,tmp.y);
mn = c;
id=j;
}
}
if(id==-)break;
else {
ans.push_back(p[id]);
vis[id]=;
}
}
cout<<n<<" ";
for(int i=;i<ans.size();i++){
cout<<ans[i].id;
if(i!=ans.size()-)
cout<<' ';
}
cout<<endl;
ans.clear();
memset(vis,, sizeof(vis));
}
}

poj1696的更多相关文章

  1. 叉积判断 POJ1696

    // 叉积判断 POJ1696 #include <iostream> #include <algorithm> #include <cstring> #inclu ...

  2. [POJ1113&POJ1696]凸包卷包裹算法和Graham扫描法应用各一例

    凸包的算法比较形象好理解 代码写起来也比较短 所以考前看一遍应该就没什么问题了..>_< POJ1113 刚开始并没有理解为什么要用凸包,心想如果贴着城堡走不是更好吗? 突然发现题目中有要 ...

  3. poj1696(极角排序,贪心)

    ---恢复内容开始--- 题目链接:https://vjudge.net/problem/POJ-1696 题意:有n个点,规定起点,每次只能向左走,不能与之前的路径交叉,求最多能经过几个点. 思路: ...

  4. poj1696 Space Ant【计算几何】

    含极角序排序模板.   Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5334   Accepted:  ...

  5. 二维坐标系极角排序的应用(POJ1696)

    Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3170   Accepted: 2029 Descrip ...

  6. poj1696 Space Ant

    地址: 题目: Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4295   Accepted: 2697 ...

  7. POJ-1696 Space Ant 凸包版花式水过!

                                                         Space Ant 明天早上最后一科毛概了,竟然毫无复习之意,沉迷刷题无法自拔~~ 题意:说实 ...

  8. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  9. POJ 1696 - Space Ant 凸包的变形

    Technorati Tags: POJ,计算几何,凸包 初学计算几何,引入polygon后的第一个挑战--凸包 此题可用凸包算法做,只要把压入凸包的点从原集合中排除即可,最终形成图形为螺旋线. 关于 ...

随机推荐

  1. 2018年东北农业大学春季校赛 I-wyh的物品(二分查找)

    链接:https://www.nowcoder.com/acm/contest/93/I来源:牛客网 题目描述 wyh学长现在手里有n个物品,这n个物品的重量和价值都告诉你,然后现在让你从中选取k个, ...

  2. 国际化之Android设备支持的语种

    昨天发了关于iOS支持的语种,文章最后也补了安卓支持语种列表.但最后发现安卓设备支持跟它列的有出入,我重新完全手工整理了一遍. 我将对应的语种在安卓的语言列表里的显示,也全部逐一列出来了,方便大家到时 ...

  3. SSE图像算法优化系列二十五:二值图像的Euclidean distance map(EDM)特征图计算及其优化。

    Euclidean distance map(EDM)这个概念可能听过的人也很少,其主要是用在二值图像中,作为一个很有效的中间处理手段存在.一般的处理都是将灰度图处理成二值图或者一个二值图处理成另外一 ...

  4. github远程建了分支,本地看不到的问题

    原因:Git  branch -a 查看的是本地仓库的所有分支  远程新建的没有同步前 就是看不到 解决:$git checkout master   //首先切到master分支 $git pull ...

  5. alpine-bash镜像制作

    alpine轻量级基于busybox的发行版,特别适合基于docker的base images. 特点: small.simple.secure 官方地址: https://alpinelinux.o ...

  6. 无法解析依赖项。“Microsoft.Net.Http 2.2.29”与 'Microsoft.Net.Http.zh-Hans

    无法解析依赖项.“Microsoft.Net.Http 2.2.29”与 'Microsoft.Net.Http.zh-Hans 2.0.20710 约束: Microsoft.Net.Http (= ...

  7. PHP访问SQL Server驱动对应关系

    引用地址: https://docs.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?vi ...

  8. 单片机成长之路(avr基础篇)- 003 AVR单片机的BOOT区

    BOOT区的由来基于一个简单的道理,即单片机的程序是保存在FLASH中的,要运行程序就必须不停的访问FLASH存储器.对于一般的FLASH存储器,数据的写入需要一定的时间来完成,在数据写入完成之前,存 ...

  9. Nload(CentOS网速的实时监控)

    Nload(CentOS网速的实时监控)的安装和安装过程中的问题 I. 安装 Download the latest rpmforge-release rpm from wget ftp://ftp. ...

  10. Spark 公共篇-InterfaceStability

    本章内容: 1.源码 InterfaceStability 类包含三个注解,用于说明被他们注解的类型的稳定性. /** * Annotation to inform users of how much ...