博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 13D Triangles
阅读量:4356 次
发布时间:2019-06-07

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

本题是向量叉积的应用,应用向量叉积可以判断一个点是否在三角形内部。

向量积 axb =|a|*|b|*sin<a,b>

当b在a的逆时针方向,向量积是正数,反之,是负数。

由图可知三角形内部的点都在三角形边的同一侧。

可以结合此性质解决本题。

绿色和红色区域可以根据三角形行走的方向相消为0

 

#include
#include
#include
#include
#include
using namespace std;typedef __int64 lld;const int INF=1000000000;struct P{ lld x,y; P(){}; P(lld x,lld y):x(x),y(y){}; P operator -(const P & b)const { P tmp(x-b.x,y-b.y); return tmp; }};lld cross(P a,P b){ return a.x*b.y-a.y*b.x;}P red[505],blue[505];int cnt[505][505];int main(){ int i,j,k; int N,M; lld x,y; memset(cnt,0,sizeof(cnt)); freopen("D:\\codeforces\\D. Triangles\\data\\20.in","r",stdin); freopen("D:\\codeforces\\D. Triangles\\data\\20.out","w",stdout); cin>>N>>M; assert(N>=0&&N<=500); assert(M>=0&&M<=500); for(i=0;i
>x>>y; assert(x>=-INF&&x<=INF); assert(y>=-INF&&y<=INF); red[i]=P(x,y); } for(i=0;i
>x>>y; assert(x>=-INF&&x<=INF); assert(y>=-INF&&y<=INF); blue[i]=P(x,y); } for(i=0;i
red[j].x)continue; for(k=0;k
=red[i].x&&blue[k].x
0) cnt[i][j]++; } cnt[j][i]=-cnt[i][j]; } } int ans=0; for(i=0;i
View Code

 

转载于:https://www.cnblogs.com/varcom/p/5020759.html

你可能感兴趣的文章
前端三大主流框架的对比React、Vue、Angular 所谓是是三分天下
查看>>
SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解
查看>>
从开发消费者变成开发生产服务者
查看>>
玩转html5(三)---智能表单(form),使排版更加方便
查看>>
JavaSE-17 泛型
查看>>
net core静态文件 访问除默认目录文件配置
查看>>
mysql—数据库优化——如何选择合适的索引
查看>>
数据库基础
查看>>
百度地图API示例之添加自定义控件
查看>>
计时器
查看>>
Spring学习笔记——Spring MVC表单控制器(SimpleFormController)
查看>>
c++学习笔记之函数重载和模板理解
查看>>
完美世界笔试题-递增子序列B-最长递增子序列打印
查看>>
ImageView实现适屏和裁剪图片功能
查看>>
iOS开发--1.对runtime的理解和整理
查看>>
清除浮动 -- 具有兼容性
查看>>
CF778D Parquet Re-laying 构造
查看>>
SpringMVC如何接收application/json内容编码类型的参数?
查看>>
【推荐系统】neural_collaborative_filtering(源码解析)
查看>>
2018 规划
查看>>