博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2318 TOYS(计算几何)
阅读量:7009 次
发布时间:2019-06-28

本文共 1276 字,大约阅读时间需要 4 分钟。

跨产品的利用率推断点线段向左或向右,然后你可以2分钟

代码:

#include 
#include
#include
using namespace std;const int N = 5005;int n, m, x1, y1, x2, y2;struct Point { int x, y; Point() {} Point(int x, int y) { this->x = x; this->y = y; }};typedef Point Vector;Vector operator - (Vector A, Vector B) { return Vector(A.x - B.x, A.y - B.y);}struct Seg { Point a, b; Seg() {} Seg(Point a, Point b) { this->a = a; this->b = b; }} seg[N];int ans[N];int Cross(Vector A, Vector B) {return A.x * B.y - A.y * B.x;}void gao(Point p) { int l = 0, r = n; while (l < r) { int mid = (l + r) / 2; if (Cross(seg[mid].a - p, seg[mid].b - p) < 0) r = mid; else l = mid + 1; } ans[l]++;}int main() { while (~scanf("%d", &n) && n) { memset(ans, 0, sizeof(ans)); scanf("%d%d%d%d%d", &m, &x1, &y1, &x2, &y2); int x, y; for (int i = 0; i < n; i++) { scanf("%d%d", &x, &y); seg[i] = Seg(Point(x, y1), Point(y, y2)); } for (int i = 0; i < m; i++) { scanf("%d%d", &x, &y); gao(Point(x, y)); } for (int i = 0; i <= n; i++) printf("%d: %d\n", i, ans[i]); printf("\n"); } return 0;}

转载地址:http://cuttl.baihongyu.com/

你可能感兴趣的文章
类的执行顺序与this指针
查看>>
最牛Java架构师进阶路线
查看>>
西安电话面试:谈谈Vue数据双向绑定原理,看看你的回答能打几分
查看>>
[译]PEP 342--增强型生成器:协程
查看>>
技术团队管理笔记(一)-识人
查看>>
[iOS]仿 Airbnb 的 tableView 头部视图层叠效果
查看>>
09、React系列之 使用yarn包管理工具
查看>>
小议Linux安全防护(二)
查看>>
动态权限相关的几个库分析
查看>>
在 Postgres 上使用 HyperLogLog 进行去重计数
查看>>
【JS第27期】继承-原型链
查看>>
SpringBoot使用缓存
查看>>
如何实现一个无限循环的轮播图
查看>>
iOS蓝牙开发
查看>>
使用maven构建java9 service实例
查看>>
十三、Android studio环境的搭建
查看>>
ES6 系列之模板字符串
查看>>
JVM(四)垃圾回收的实现算法和执行细节
查看>>
对象解构与点操作访问究竟谁快
查看>>
Python3入门机器学习(七)- PCA
查看>>