HDU2108和HDU2036(叉乘)
来源:互联网 发布:义乌招淘宝美工 编辑:程序博客网 时间:2024/05/17 23:19
hdu2108
判断是否为凸边形
判断连续三点的叉乘
若为凸,内角<180;若为凹,内角>180
所以通过正负来判断
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <cmath>#include <algorithm>typedef long long ll;typedef unsigned long long ull;using namespace std;const int N=100050;struct node{ int x,y;}pnode[N];int judge(int x,int y,int z){ return (pnode[y].x - pnode[x].x)*(pnode[z].y - pnode[y].y)-(pnode[z].x - pnode[y].x)*(pnode[y].y - pnode[x].y);}int main(){ int n; while(scanf("%d",&n) && n) { for(int i = 1;i <= n;i++) scanf("%d%d",&pnode[i].x,&pnode[i].y); pnode[n+1].x = pnode[1].x; pnode[n+1].y = pnode[1].y; pnode[n+2].x = pnode[2].x; pnode[n+2].y = pnode[2].y; int flag = 0; for(int i = 1;i <= n;i++) { if(judge(i,i+1,i+2)<0) { flag = 1; break; } } if(flag ) printf("concave\n"); else printf("convex\n"); } return 0;}
hdu2036
求一个多边形的面积
分成许多个三角形来计算。 S△ = 向量AB 与 向量AC的叉乘/2
#include <stdio.h>#include <math.h>int main(){ int n,i,j; double S,x[101],y[101]; while(scanf("%d",&n) && n != 0) { for(i = 0;i < n;i++) scanf("%lf%lf",&x[i],&y[i]); x[i] = x[0]; y[i] = y[0]; S = 0; for(j = 0;j < i;j++) S += x[j] * y[j+1] - x[j+1] * y[j]; S = fabs(S / 2); printf("%.1lf\n",S); } return 0;}
0 0
- HDU2108和HDU2036(叉乘)
- hdu2036 求多边形面积(向量叉乘)
- Shape of HDU(hdu2108,叉乘判断多边凹凸性)
- hdu2108 Shape of HDU (叉乘,判断是否为凸包)
- HDU2108
- hdu2108
- HDU2108
- 点乘和叉乘
- 点乘和叉乘
- 点乘和叉乘
- 点乘和叉乘
- HDU2108(叉积判断凸多边形,凹多边形)
- hdu2108叉积判断凸凹
- HDU2036(多边形面积)
- hdu2036
- HDU2036
- hdu2036
- hdu2036
- scala学习:scala中的继承
- 1.[Python]使用subprocess在新的进程中执行命令
- 常用正则表达式大全
- java dom4j 解析XML文件 简易教程
- python通过BeautifulSoup分页网页中的超级链接
- HDU2108和HDU2036(叉乘)
- 子串和 nyoj 44
- opengl VAO and VBO
- 上拉加载(二)
- JVM垃圾收集(一) 寻找垃圾
- 将Activity设置成窗口的样式
- Java项目生成帮助文档教程
- node.js调用bat
- PHP中使用XML-RPC构造Web Service简单入门