把每件物品当成平面上一个点,将第一件物品放在原点。那个权重值相当于一条直线,于是相当于直线绕原点转一圈,统计上侧点的数量。

队友的代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int xx,yy,n,num,minans,maxans,tx,ty,same,nowans;
struct node{
int x,y,type;
}a[100005],b[100005];
bool cmp1(node a,node b)
{
return a.x>b.x;
}
bool cmp2(node a,node b)
{
return a.y>b.y;
}
bool cmp3(node a,node b)
{
int yy1=a.y-yy;int yy2=b.y-yy;
int xx1=a.x-xx;int xx2=b.x-xx;
return yy1*xx2>yy2*xx1;
}
void ok(int p)
{
minans=min(minans,p);
maxans=max(maxans,p);
}
bool samer(int u,int v)
{
return (a[u].x-xx)*(a[v].y-yy)==(a[u].y-yy)*(a[v].x-xx);
}
int main()
{
minans=99999999;
maxans=-1;
scanf("%d",&n);
scanf("%d%d",&xx,&yy);
b[1].x=xx; b[1].y=yy;
for(int i=2;i<=n;++i)
{
scanf("%d%d",&tx,&ty);
b[i].x=tx; b[i].y=ty;
if(tx>xx&&ty>yy)
{ }
else if(tx<xx&&ty<yy)
{ }
else if(tx<xx&&ty>yy)
{
a[++num].x=xx+(xx-tx);
a[num].y=yy-(ty-yy);
a[num].type=1;
}
else if(tx>xx&&ty<yy)
{
a[++num].x=tx;
a[num].y=ty;
a[num].type=2;
}
else if(tx==xx&&ty==yy)
{
same++;
}
}
sort(b+1,b+n+1,cmp1);
for(int i=1;i<=n;++i)
if(b[i].x==xx)
{
ok(i);
}
sort(b+1,b+n+1,cmp2);
for(int i=1;i<=n;++i)
if(b[i].y==yy)
{
ok(i);
}
sort(a+1,a+num+1,cmp3);
if(!num)
{
printf("%d %d",minans,maxans);
return 0;
}
nowans=0;
for(int i=1;i<=n;++i)
if(b[i].x!=xx||b[i].y!=yy)
{
if(b[i].y==yy)
{
if(b[i].x>xx) nowans++;
}
else if(b[i].y>yy)
nowans++;
}
int l=1,r=1;
while(l<=num)
{
while(samer(l,r+1)&&r<num)
{
r++;
}
int now1=0,now2=0;
for(int i=l;i<=r;++i)
{
if(a[i].type==1) now1++;
else now2++;
}
ok(nowans+now2+same+1);
ok(nowans-now1+1);
nowans+=now2;
nowans-=now1;
l=r+1;
r=l;
}
printf("%d %d",minans,maxans);
return 0;
}

【计算几何】【极角排序】Gym - 101174B - Bribing Eve的更多相关文章

  1. bzoj 5099 [POI2018]Pionek 计算几何 极角排序

    [POI2018]Pionek Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 269  Solved: 80[Submit][Status][Disc ...

  2. hdu-5784 How Many Triangles(计算几何+极角排序)

    题目链接: How Many Triangles Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. 【计算几何+极角排序+爆ll】E. Convex

    https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/E [题意] 给定n个点的坐标,可以选择其中的四个点构造凸四边形,问最多能构造多少 ...

  4. 【计算几何】【凸包】【极角排序】【二分】Gym - 101128J - Saint John Festival

    平面上n个红点,m个黑点,问你多少个黑点至少在一个红三角形内. 对红点求凸包后,转化为询问有多少个黑点在凸包内. 点在凸多边形内部判定,选定一个凸包上的点作原点,对凸包三角剖分,将其他的点极角排序之后 ...

  5. hrbustoj 1305:多边形(计算几何,极角排序练习)

    多边形 Time Limit: 1000 MS     Memory Limit: 65536 K Total Submit: 113(42 users)   Total Accepted: 51(3 ...

  6. poj 1696:Space Ant(计算几何,凸包变种,极角排序)

    Space Ant Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2876   Accepted: 1839 Descrip ...

  7. 【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles

    平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调 ...

  8. Gym 101986D Making Perimeter of the Convex Hull Shortest(凸包+极角排序)

    首先肯定是构造一个完整的凸包包括所有的点,那么要使得刚好有两个点在外面,满足这个条件的只有三种情况. 1.两个在凸包上但是不连续的两个点. 2.两个在凸包上但是连续的两个点. 3.一个在凸包上,还有一 ...

  9. LightOJ 1285 - Drawing Simple Polygon (几何,极角排序)

    1285 - Drawing Simple Polygon   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...

随机推荐

  1. 简易微信小程序签到功能

    一.效果图 点击签到后 二.数据库 用一张数据表存用户签到的信息,每次用户签到都会往表中添加一条记录了用户id和签到日期的数据,如下图 三.后端 后端写两个接口,一个用于查询用户今日是否签到和签到记录 ...

  2. kolakoski序列

                   搜狐笔试=.= 当时少想一个slow的指针..呜呜呜哇的一声哭出来 function kolakoski(token0, token1) { token0 = token ...

  3. ubuntu gnome桌面秀

    之前装的是ubuntu14.10gnome版的 然后一路升级成15.04,到今天的15.10 最后发现现在的gnome桌面已经非常适合我的工作了 先放一张图,这是我的桌面 原来使用ubuntu15.0 ...

  4. hadoop入门学习

    hadoop入门学习:http://edu.csdn.net/course/detail/1397hadoop hadoop2视频:http://pan.baidu.com/s/1o6uy7Q6HDF ...

  5. 浅谈分布式一致性与CAP/BASE/ACID理论

    ##转载请注明 CAP理论(98年秋提出,99年正式发表): C( Consistency)一致性:在分布式系统中,数据一致更新,所有数据变动都是同步的: A( Availability)可用性:分布 ...

  6. 【VI Script】你不知道的脚本编程

    前言 近期,小黑在写程序的时候,经常会遇到一些重复性的工作.尤其是在写到QMH(Queued Message Handler)程序时,经常需要创建UI界面上的一些控件引用,并且在程序中捆绑成簇使用. ...

  7. NOIP 2012 Day2

    tags: 扩展欧几里得 二分答案 查分 倍增 二分答案 贪心 NOIP categories: 信息学竞赛 总结 同余方程 借教室 疫情控制 同余方程 Solution 首先同余式可以转化为等式. ...

  8. 三:Storm设计一个Topology用来统计单词的TopN的实例

    Storm的单词统计设计 一:Storm的wordCount和Hadoop的wordCount实例对比

  9. Linux下安装rz、sz命令(文件上传下载)

    yum install -y lrzsz 说明:rz命令本地上传文件到服务器:sz命令发送文件到本地.

  10. 【转载】WebService到底是什么?

    http://blog.csdn.net/wooshn/article/details/8069087/ 一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍 ...