「HDU3629」Convex-计算几何

姿态传感器/陀螺仪之ICM-42670-P应用原理图设计 ICM-42670-P采用LGA-14封装,尺寸为2.5x3x0.76毫米,工作电压范围为1.71V至3.6V,支持I3CSM、I2C和SPI串行通信接口。其设计目标是提供高精度、低功耗和小型化的解决方案,以满足消费类和工业应用的需求。ICM-42670-P是一款由TDK InvenSense推出的高性能六轴MEMS运动追踪传感器,集成了3轴陀螺仪和3轴加速度计,适用于多种应用场景,包括可穿戴设备、游戏控制器、无人机、AR/VR设备等。 阅读详情

Description

链接

Solution

考虑平面相交线段对数等于平面凸四边形数(相交线段相当于对角线)。

平面凸四边形个数转化为总数减去凹四边形数。

凹四边形数相当于一个三角形中包含了一个点。

枚举被包含的点,计算包含它的三角形比较麻烦,统计不包含它的三角形。

极角排序后,若两个向量 i , j i,j i,j之间的夹角小于 π \pi π,那么 i + 1 i+1 i+1到 j j j的向量任意选出两个与 i i i组合一定能组成不包含当前点的三角形,two-pointers统计即可。

#include <bits/stdc++.h>
using namespace std;

typedef long long lint;

const int maxn = 705;
const double pi = acos(-1);

int n;
int x[maxn], y[maxn], tot;
lint ans;

struct point
{
	int x, y;
	double angle;

	bool operator < (const point &a) const {
		return angle < a.angle;
	}
	
} p[maxn * 2];

inline int gi()
{
	char c = getchar(); bool f = 1;
	while (c != '-' && (c < '0' || c > '9')) c = getchar();
	if (c == '-') c = getchar(), f = 0;
	int sum = 0;
	while ('0' <= c && c <= '9') sum = sum * 10 + c - 48, c = getchar();
	return f ? sum : -sum;
}

lint solve(int k)
{
	lint res = (lint)(n - 1) * (n - 2) * (n - 3) / 6;
	tot = 0;
	for (int i = 1; i <= n; ++i)
		if (i != k) {
			p[++tot] = (point) {x[i] - x[k], y[i] - y[k]}; p[tot].angle = atan2(p[tot].y, p[tot].x);
			p[++tot] = (point) {x[i] - x[k], y[i] - y[k]}; p[tot].angle = p[tot - 1].angle + pi * 2;
		}
	sort(p + 1, p + tot + 1);
	for (int i = 1, j = 0; i < n; ++i) {
		while (p[j + 1].angle - p[i].angle <= pi) ++j;
		if (j - i >= 2) res -= (j - i) * (j - i - 1) / 2;
	}
	return res;
}

int main()
{
	freopen("convex.in", "r", stdin);
	freopen("convex.out", "w", stdout);

	int T = gi();
	while (T--) {
		n = gi();
		for (int i = 1; i <= n; ++i) x[i] = gi(), y[i] = gi();
		ans = (lint)n * (n - 1) * (n - 2) * (n - 3) / 24;
		for (int i = 1; i <= n; ++i) ans -= solve(i);
		printf("%lld\n", ans);
	}
	
	return 0;
}
RK3568 OpenHarmony3.2 蓝牙模块AP6275S适配(已更新) OpenHarmony3.2 Release版默认是适配AP6275s这款蓝牙芯片的,但是打开蓝牙,发现无法扫描到设备、连接设备。目前平台soc为RK3568,根据项目要求,自定义外设。接下来将以解决bug为目的,学习和记录OpenHarmony平台下蓝牙模块的适配流程。RK809 CLK:32.768KHzUART1M1:与蓝牙模块通讯的串口:GPIO4_B6:GPIO4_A5WAKE_GPIO:未定义,硬件拉高1.8V: 未定义,悬空主要是打开串口,/dev/ttyS1,得到文件描述符fd。 阅读详情

相关推荐

神经元细胞结构刨析(持续更新)

神经细胞的学习笔记

weixin_46596227的博客 2220

HDU-3629(Convex)

题意:给定 n 个坐标,从中选取四个组成凸四边形,求可以组成的凸四边形数量(n<=700) 分析:暴力枚举四个点然后判断肯定会超时,我们知道任意一个凹四边形都可以看作一个三角形内包含着一个点,那么我们可以枚举这个三角形内的内点,然后找出所有的三角形可以包含这个点的数量,即凹四边形的数量,再用C(n,4)减去凹四边形的数量,即是凸四边形的数量; 以当前枚举的点为原点坐标,把其余所有的...

Joker & Liar的博客 309

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1869

HDU 3629 图的同构

思路:每个顶点不可孤立 ,每个顶点的度不可超过2,则相应的图必定是由若干个链或环组成。 如果为链,则必有两顶点度为1 ;如果为环,则每个顶点度均为2 。 那么比较两个图的链和环是否完全按相同即可。 对每个分支记录分支内的顶点个数 和 是否为环,然后对每个分支进行排序,按照顶点个数从小到大,相同顶点个数的,环在前,链在后。最后依次比较即可。 #include #include #

Neutralzz的博客 461

光度立体三维重建——光源标定

光源标定的目的是为了确定光源方向或强度,一般利用物体表面的明暗信息、阴影信息或者反射特性三类信息中的其中一种即可,也可以将三种信息结合。采用不同标定物,是利用不同标定物的反射特性获取更加精确的光源信息。

wfengzi5的博客 1560

AVL-Excite新手必看:5步搞定发动机阀系系统建模(附B站视频教程)

本文为AVL-Excite新手提供发动机阀系系统建模的5步详细指南,涵盖软件环境搭建、基本结构建立、关键参数设置、仿真分析及常见问题排查。通过清晰的步骤说明和实用技巧,帮助工程师快速掌握建模方法,并附有精选B站视频教程链接,便于实践学习。

weixin_29305313的博客 502

hdu 3629 计算几何

这道题想了很久都没想出来什么高效一点的方法,所以就在网上膜拜了大牛的思路。 主要思想就是去掉点对之间的凸包,因为凸包一定是一个三角形中包含一个点,那我们就可以对于每个点判断有多少个三角形能把它包含在内 判断可以用逆向思维,就是所有三角形的个数减去有多少个三角形不能把它包含在内,然后通过极角排序来求出不包含这个点的三角形个数 不得不说atan2函数挺好用的、、、、、、好吧先把代码贴一份。。有空

618

CMAC算法原理

2、K1 通过以下运算导出:若 L 的最高有效位等于 0,则 K1 是 L 的左移 1 位。3、K2 通过如下运算导出:若 K1 的最高有效位等于 0,则 K2 是 K1 的左移 1 位。采用了 AES 算法中的类似 CBC 模式的加密方式,即对前一个分组的密文与当前分组的明文进行异或操作后在加密,2、分块处理:首先将消息分成多个固定长度的块,若消息长度不是块大小的倍数,则可以使用填充来将其填充到合适的大小。1、子密钥计算,通过主密钥生成子密钥(key1,key2),子密钥用于最后一个块处理;

sky的博客 1658

HDU-3629-Convex-计算几何

题意:N个点求凸四边形的个数 思路:可以先求出凹包的个数,然后总数减去凹包个数,凹包是一个点在一个三角形中。可以枚举点i看有多少个三角形将他包在里面。求三角形时可以用到极角排序方法。 #include #define eps 1e-8 const double pi=acos(-1.0); using namespace std; struct NODE { double x,y; }

lyc1635566ty的博客 590

C++游戏开发实战:从零构建局域网联机对战系统(附完整代码解析)

本文详细介绍了如何使用C++开发局域网联机对战游戏系统,涵盖从环境搭建到实战代码解析的全过程。重点讲解了Winsock库的应用、Socket通信原理、服务端与客户端开发技巧,以及性能优化和安全防护方案,帮助开发者快速掌握C++游戏开发的核心技术。

weixin_42524945的博客 444

华南理工大学电子与信息学院23年预推免复试面试经验贴

华南理工大学电子与信息学院23年预推免复试面试经验贴

Scut_Ty的博客 3295

hdu 3629

如果四个点不能组成凸四边形,则必然是其中三个点组成一个三角形,另一个点在该三角形内部。于是我们可以O(n)枚举一个点作为内部中心,试图从其他的点里选出三个来,组成三角形把它包围住,看看有多少种可能的选择。继续观察发现,如果三个点不能圈住中心点,则必然是存在一条通过中心点的直线,使得这三点都在直线的同侧。于是我们可以把所有点(除了中心点)按极角排序,然后线性转圈扫描一下就可以统计出来了。总的复杂度是

老李2009 877

Nerf 训练自有数据

colmap相机位姿转为LLFF格式数据

zfjBIT的专栏 2309

hdu 3629 Convex 计算几何

不会做,很可耻的看了题解,题解还看了那么久。http://blog.sina.com.cn/s/blog_64675f540100ksug.html 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3629 #include #include #include #include #define eps 1e-8 #define pi aco

NM的专栏 591

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU 3629 Convex(10年天津,计算几何)

转载请注明出处,谢谢http://blog.youkuaiyun.com/acm_cxlove/article/details/7854526       by---cxlove 题目:给出N个点,选出4个点组成凸多边形的有多少种 http://acm.hdu.edu.cn/showproblem.php?pid=3629 C(N,4)的枚举必挂。 哎还是太弱了,看了别人的做法 因为只考虑4

窝不是爱酱,喵~~~~ 3130

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU3629:Convex

传送门 求凸四边形的个数 转化成总数减去凹四边形的个数 凹四边形一定是一个三角形中间包含的另外一个点 那么枚举被包含的点,其它的对于这个点极角排序 被包含不好算,算总数减去不被包含的 枚举三角形的一个顶点,那么另外一个顶点和这个顶点关于枚举的被包含的点的角度不超过 π\piπ 那么直接 two−pointerstwo-pointerstwo−pointers 统计即可 # include &lt;...

Cyhlnj 301

[HDU3629] Convex(极角序+双指针)

题意 给出 nnn 个点,第 iii 个点的坐标为 (xi,yi)(x_i,y_i)(xi​,yi​)。求可以形成的严格凸四边形个数。 其中,1≤n≤7001\le n\le 7001≤n≤700。 分析 纪念自己独立写出来的第一道计算几何!! 考虑 答案 =Cn4−=C_n^4-=Cn4​− 凹四边形的个数。 凹四边形意味着有一个点在另外三个点围成的三角形内部(包括边界)。 因此我们枚举在内部的点 AAA,然后用 Cn−13C_{n-1}^3Cn−13​ 减去不包含 AAA 的三角形个数。然后对于剩下的点

hipamp的博客 236

HDU 3629 Convex(数论+计数+几何)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3629 题意:给定n个点,求能构成几个凸四边形 解法:详见blog.sina.com.cn/s/blog_64675f540100ksug.html,利用到了组合数学计数的方法,高效算法two pointer,复杂度O(n^2) 代码: #include #include #include

Remilia's 1711

hdu 3629 Convex(计数问题)

题目链接:hdu 3269 Convex 题目大意:给出n个点,问任选四个点可以组成多少个凸四边形。 解题思路:和uav11529的做法是一样的,只不过求的东西不一样。 #include #include #include #include #include using namespace std; typedef long long ll; const int N =

不慌不忙、不急不躁 1222

HDU - 3629 Convex(计算凸四边形个数)

题目链接:点击查看 题目大意:给出n个点,计算能组成的凸四边形个数 题目分析:朴素方法是枚举四个点,n^4的复杂度,而这个题目的n给到了700,显然是不行的,既然点的个数比较大,正难则反,我们考虑组合数学,首先n个点能组成C(n,4)个四边形,我们只要减去凹四边形的个数就是答案了,我们记凹四边形的个数为ans,凹四边形,换一种说法,就是取三个点组成的三角形,问有多少个点落在三角形内,那么三角形...

Falcon的博客 1155

HDU.3629 Convex (计算凸多边形个数)

【题意】平面上给n个点,问有多少个凸四边形? 【解题方法】对于每个点,凹四边形的个数等于:C(n-1,3)-在这个点同一侧三点构成的三角形的个数。对于凸多边形的一个顶点, 其他顶点必然在穿过这个顶点的直线的同侧。算极角时,如果是负数(-pi ~ 0),就把它加上2 * pi,这样就把角度统一到了0~2pi,另外,向这题顺次统计两个点的夹 角时,由于会出现转了一圈的情况不好计算角度,所以在

I good vegetable a! 792

UVA 11529 - Strange Tax Calculation(计数问题)

题目链接:11529 - Strange Tax Calculation 题意:平面上n个建筑物,3个建筑物可以组成一个三角形,计算平均每个三角形内有多少个点 思路:问题等价于,求凹四边形的占所有四边形的比例,用O(n^2)的算法,跟  HDU 3629 Convex 这题是一个道理 代码: #include #include #include #include using

Remilia's 1148

hdu 3629 Convex 平面点集能组成多少凸四边形 极角排序

Convex<br />Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)<br />Total Submission(s): 369    Accepted Submission(s): 79<br /><br />Problem DescriptionYour task is very simple. You will get the coordinates of n points in

kongming_acm的专栏 2087

HDU 3629-Convex找凸四边形个数(扫描+二分/two pointers)

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=11713 题意:给n个点,无三点共线,求凸四边形个数。 对应凸四边形,有着一个 凹四边形,其实凹四边形,就相当于一个三角形,内部包含了一个点,则这样就可以构成一个凹四边形。  内部包含x个点,则x个凹四边形。 则题目转化为求有多少个凹四边形,再转为  每个三角形内部有

缺氧 796

Convex(平面几何 极角排序)

original link - http://acm.hdu.edu.cn/showproblem.php?pid=3629 题意: 给出nnn个点,求凸四边形的个数,保证不存在三点共线。 解析: 过程大致如下: 凸四边形个数为Cn4−C_n^4-Cn4​−凹四边形个数 凹四边形中一定有一个点被另外三个点组成的三角形包围。 枚举每个点,包围这个点的三角形数量等于Cn−13−C_{n-1}^3-C...

QAQ 1165

hdu 3629组合几何,逆向思维降低复杂度

题目意思: t

雷_u013188850的专栏 578

hdu 3629 6731

一:叉乘可以判断一个点和一条线段的关系: 例如点A(X1,Y1),线段用向量点B(X2,Y2)和点C(X3,Y3)表示。 令函数Cross(A,B,C)为叉乘运算;令flag=Cross(A,B,C),则有flag=(X1-X3)(Y2-Y3)-(X2-X3)(Y1-Y3); 当flag>0的时候,点A在线段BC的右边;因为向量AC在向量BC的顺时针方向 当flag=0的时候,点A在直线BC...

weixin_43289491的博客 275
上一篇: 「LOJ6078」「2017 山东一轮集训 Day7」重排-DP
下一篇: 「HNOI2019」校园旅行-DP
DSL_HN_2002
博客等级 码龄10年 46粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值