蚂蚁(ant.pas/c/cpp)
题目大意
在平面上有 N 只蚂蚁 N 个树洞,每个树洞只能容纳下一只蚂蚁,蚂蚁们都是直线行走
的。 现在蚂蚁们希望能进入树洞中, 希望你能构造出一种方案使得任意两个蚂蚁的路线不相
交。
保证不会出现三点共线的情况。对于有多种不同的解,输出任意一组即可。无解时,输
出-1。
输入文件
输入文件为 ant.in。
第一行为一个数 N。
接下来 N 行,每行两个非负整数,第 i+1 行为第 i 号蚂蚁的坐标。
接下来 N 行,每行两个非负整数,第 i+N+1 行为第 i 号树洞的坐标。
输出文件
输出文件为 ant.out。
共 N 行,每行一个数,为第 i 号蚂蚁进入的树洞编号,若无解仅需输出一行一个数-1。
样例输入
5
10 8
5 3
4 8
5 4
8 4
7 9
7 6
2 5
8 5
1 6
样例输出
1
3
2
5
4
数据规模与约定
对于 30%的数据,N≤20;

对于 70%的数据,N≤200;

对于 100%的数据,N≤1000。

————————————————————————————题解

我们选择一个最左下角的点,然后把其他的点按照它们与这个点的极角排序,我们一定可以找到一条最左下点和它的一个对应点把平面分割成两个部分,每个平面里面树洞个数和蚂蚁个数相等,然后我们可以递归处理

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>//important
 4 #include <algorithm>
 5 #define siji(i,x,y) for(int i=(x);i<=(y);++i)
 6 #define gongzi(j,x,y) for(int j=(x);j>=(y);--j)
 7 #define xiaosiji(i,x,y) for(int i=(x);i<(y);++i)
 8 #define sigongzi(j,x,y) for(int j=(x);j>(y);--j)
 9 #define ivorysi
10 typedef long long ll;
11 using namespace std;
12 int n;
13 struct vec {
14     int x,y,id,ok;
15     ll operator *(const vec &a) const{
16         return (ll)x*a.y-(ll)y*a.x;
17     }
18     bool operator < (const vec &a)const{
19         return x==a.x ? y<a.y : x<a.x;
20     }
21     vec operator - (const vec &a) const {
22         vec c;c.x=x-a.x;c.y=y-a.y;
23         return c;
24     }
25 }pos[2005];
26 int hole[2005];
27 int cross(vec a,vec b){
28     return a.x*b.y-a.y*b.x;
29 }
30
31 void init() {
32     scanf("%d",&n);
33     siji(i,1,n) {
34         scanf("%d%d",&pos[i].x,&pos[i].y);
35         pos[i].ok=1;pos[i].id=i;
36     }
37     siji(i,n+1,2*n) {
38         scanf("%d%d",&pos[i].x,&pos[i].y);
39         pos[i].ok=-1;pos[i].id=i;
40     }
41 }
42 vec st;
43 bool cmp(vec c,vec d) {
44     return (c-st)*(d-st)>0;
45 }
46 void solve(int c,int d) {
47     if(c+1>d) return;
48     sort(pos+c,pos+1+d);//对于每个区间重新按最靠左下排序
49     st=pos[c];
50     sort(pos+c+1,pos+1+d,cmp);//极角排序
51
52     int t=pos[c].ok;
53     int divnum;
54     siji(i,c+1,d) {
55         t+=pos[i].ok;
56         if(t==0) {divnum=i;break;}
57     }
58     hole[pos[c].id]=pos[divnum].id;
59     hole[pos[divnum].id]=pos[c].id;
60     solve(c+1,divnum-1);
61     solve(divnum+1,d);
62 }
63 int main(int argc, char const *argv[])
64 {
65 #ifdef ivorysi
66     freopen("ant.in","r",stdin);
67     freopen("ant.out","w",stdout);
68 #else
69     freopen("f1.in","r",stdin);
70 #endif
71     init();
72     solve(1,2*n);
73     siji(i,1,n) {
74         printf("%d\n",hole[i]-n);
75     }
76     return 0;
77 }

转载于:https://www.cnblogs.com/ivorysi/p/6395712.html

2017辽宁冬令营-4.蚂蚁相关推荐

  1. 蚂蚁金服核心技术:百亿特征实时推荐算法揭秘

    小叽导读:文章提出一整套创新算法与架构,通过对TensorFlow底层的弹性改造,解决了在线学习的弹性特征伸缩和稳定性问题,并以GroupLasso和特征在线频次过滤等自研算法优化了模型稀疏性.在支付 ...

  2. 支付宝蚂蚁森林入选2019年世界环境日实践案例

    今天是世界环境日,联合国环境署(UNEP)在其官方社交媒体账号上公布了2019年世界环境日实践案例,其中,支付宝蚂蚁森林入选.UNEP认为,空气污染和沙尘暴是全球面临的共同挑战,蚂蚁森林从虚拟能量到现 ...

  3. 蚂蚁金服黑科技:SOFA DTX分布式事务,保障亿级资金操作一致性

    原文链接:点击打开链接 摘要: 小蚂蚁说: SOFA ( Scalable Open Financial Architecture )是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构 ...

  4. 十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘

    蚂蚁集团的业务种类繁多,兼具金融级的"稳" 和互联网的 "快",支撑又快又稳的业务发展需要完善的稳定性保障体系, 这个体系的基石就是可观测性平台-AntMoni ...

  5. 十年磨一剑:蚂蚁集团可观测性平台 AntMonitor

    蚂蚁集团的业务种类繁多,兼具金融级的"稳" 和互联网的 "快",支撑又快又稳的业务发展需要完善的稳定性保障体系, 这个体系的基石就是可观测性平台-AntMoni ...

  6. 蚂蚁金服 SOFAStack 团队:开源不是一锤子买卖 | 码云封面人物第 16 期

    SOFAStack 团队:包括余淮.善逝.丞一.碧远标题 本期嘉宾: SOFAStack 团队:包括余淮.善逝.丞一.碧远等人. SOFAStack:蚂蚁金服自主研发的金融级分布式架构,包含了构建金融 ...

  7. 数据赋能丨蚂蚁金服决战To B开放

    数据赋能丨蚂蚁金服决战To B开放 李静瑕 数创客 今天 图为蚂蚁金服副总裁刘伟光 ▲ 来源:轻金融 作者:李静瑕 "再过十年,几乎所有的企业都将变成数据型驱动或者软件型驱动的公司.&quo ...

  8. 速收藏!实拍你的蚂蚁森林,张张都是高清美图壁纸

    你们过去在蚂蚁森林通过步行.线下支付.生活缴费.骑共享单车等各种低碳行为,以及起早贪黑抛亲弃友好不容易养大的树,终于长大了! 2017年秋天,蚂蚁森林组织了一个蚂蚁森林小分队去了一趟蚂蚁森林,给那些迫 ...

  9. 蚂蚁金服的相关资料收集

    所有文章都是转载非原创.如涉及侵权,请联系作者chenwenrui238@163.com删除. 一:公司介绍 1.蚂蚁金服创立及早期发展 2.蚂蚁金服大事记2004-2018 3.蚂蚁金服的股权结构 ...

最新文章

  1. 杭电 hdu 1003
  2. sqlalchemy如何实现时间列自动更新?
  3. exchanger_如何通过示例在Java中使用Exchanger
  4. sambd ERROR: job for smbd.service failed
  5. mysql中不要 秒的函数_Mysql中日期和时间函数应用不用求人 | 很文博客
  6. Skype For Business Server 2015 离线消息
  7. 【ACL2020放榜!】事件抽取、关系抽取、NER、Few-Shot 相关论文整理
  8. 解决docker下载安装速度慢的问题
  9. RS232(串口线)转RJ45(网线)
  10. SVN提交时出现remains in conflict错误
  11. 针对三层别墅的两种无线组网方案
  12. android日历编程,Android日历控件PickTime代码实例
  13. 全志A10平板上的ubuntu终极安装版,支持HDMI和平板本机LCD
  14. golang学习之negroni/gizp源码分析
  15. android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。
  16. JS正则表达式-附身份证号码验证(简易版)
  17. HTML+CSS实现导航条
  18. Python语法基础(U.7)-文件和数据格式化
  19. HTML5基础 | (3)HTML常用元素介绍
  20. 电脑上不了网了......

热门文章

  1. java数组转换成字符串,附小技巧
  2. 【Linux入门到精通系列讲解】Centos 7软件安装的三种方式
  3. 【Kali渗透全方位实战】子域名的概念与探测(DNSenum工具和Sublist3r脚本的使用)
  4. java封装,继承和多态
  5. 工业控制软件测试评价体系,工业控制信息安全产品测试评价的体系.doc
  6. python编程基础知识体系_Python 编程核心知识体系-基础|数据类型|控制流(一)...
  7. php一对一模型关联,thinkphp 模型关联一对一排序
  8. python语言解释器的全部代码都是开源的_Python IDE和解释器的区别是什么?
  9. ERROR in ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf 1:0 Module parse failed:
  10. android检查usb广播,Android 检测USB 音频设备