测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A21234. 几何计数

填空题 较难

题目描述

几何计数

题目描述

你在坐标纸上标记了 n 个互不相同的点。

现在你想知道:从这些点中任选三个,有多少种选择方式能构成一个真正的三角形?

所谓真正的三角形,是指三个顶点不共线,即面积大于零的三角形。请计算这个数目。

输入

第一行,一个整数 n,表示点的数量。

接下来 n 行,每行包含两个整数 xi 和 yi ,表示第 i 个点的坐标。

输出

输出一个整数,表示能够构成三角形的三点组合的数量。

输入样例1

3
0 0
2 0
0 -3

输出样例1

1

输入样例2

20
224 433
987654321 987654321
2 0
6 4
314159265 358979323
0 0
-123456789 123456789
-1000000000 1000000000
124 233
9 -6
-4 0
9 5
-7 3
333333333 -333333333
-9 -1
7 -10
-1 5
324 633
1000000000 -1000000000
20 0

输出样例2

1124

数据范围

3≤N≤300,-109≤Xi、Yi≤109,所有点的坐标互不相同。

参考答案

#include<iostream> int main() { int n; std::cin >> n; int x[300]; int y[300]; for (int i = 0; i < n; ++i) { std::cin >> x[i] >> y[i]; } int c = 0; for (int i = 0; i < n; ++i) for (int j = i+1; j < n; ++j) for (int k = j+1; k < n; ++k) { long long x1 = x[j] - x[i]; long long x2 = x[k] - x[i]; long long y1 = y[j] - y[i]; long long y2 = y[k] - y[i]; if (y1 * x2 != y2 * x1) c++; } std::cout << c << "\n"; }
上一题 下一题