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

队友的代码:

#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. chrome表单自动填充导致input文本框背景变成偏黄色问题

    你曾遇到过吗? 困扰宝宝好久的问题,本以为是什么插件导致的,结果是chrome浏览器自动填充文本时默认的样式,搜嘎. 一.修改自动填充input文本框背景色: 使用以下代码 可以设置自己的想要的默认文 ...

  2. z-index 不起作用

    1.第一种情况(z-index无论设置多高都不起作用情况): 这种情况发生的条件有三个: 1.父标签 position属性为relative: 2.问题标签无position属性(不包括static) ...

  3. AndroidStudio创建jinLibs文件夹

    在文件中的buildTypes节点下添加 sourceSets.main {          jniLibs.srcDir 'libs'      } 如图

  4. python中multiprocessing模块

    multiprocess模块那来干嘛的? 答:利用multiprocessing可以在主进程中创建子进程.Threading是多线程,multiprocessing是多进程. #该模块和Threadi ...

  5. document.onclick在ios上不触发的解决方法与touchstart点击穿透处理

    document.onclick = function (e) { var e = e ? e : window.event; var tar = e.srcElement || e.target; ...

  6. C++学习之路(七):以const,enum,inline替换#define

    这篇博文主要是编程中的一些问题和技巧.如题目所示,这些关键字的作用不再进行描述.直接描述功能和实例代码. 首先,在头文件中对类进行定义,是不会为类分配内存空间的,在这一点上类定义可以和普通变量类型的声 ...

  7. 真正的上锁前,为何要调用preempt_disable()来关闭抢占的case【转】

    转自:http://blog.csdn.net/kasalyn/article/details/11473885 static inline void raw_spin_lock(raw_spinlo ...

  8. pom报错解决方法大全

    1.Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom 解决方法: Windows: CMD --> c ...

  9. linux命令(11):df命令

    1.查看磁盘空间和当前的磁盘数:df –lh或者df –i 2.显示指定类型磁盘:df -t ext4 3.列出各文件系统的i节点使用情况:df  -ia 4.列出文件系统的类型:df -T

  10. Nginx-请求处理与响应

    void ngx_http_init_connection(ngx_connection_t *c) { ngx_uint_t i; ngx_event_t *rev; struct sockaddr ...