E-等腰三角形(easy)_牛客小白月赛69 (nowcoder.com)
这道题要保证点不重复,并且要保证三点不在一条直线上,所以可以用向量来做。
还有一个小知识,如果两个线段相等并且不共线,那么这两个线段端点一定可以构成三角形。
向量判断的知识:
由两点判断两条直线垂直 :(x2 - x1)(x3 - x1) + (y2 - y1)(y3 - y1) = 0
平行 :(x2 - x1)(y3-y1) == (x3 - x1)(y2-y1)
代码如下:
#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int N = 1e5 + 10;
int x[N], y[N];
int dis(int i, int j)
{
return (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(nullptr);
int n; cin >> n;
for (int i = 1; i <= n; i++)
cin >> x[i] >> y[i];
int ans = 0;
for (int i = 1; i <= n - 2; i++)
{
for (int j = i + 1; j <= n - 1; j++)
{
for (int k = j + 1; k

该博客探讨了如何利用向量判断等腰三角形的方法,避免点的重复和共线,通过向量公式判断直线垂直和平行,提供了Python实现的代码示例。
最低0.47元/天 解锁文章
468

被折叠的 条评论
为什么被折叠?



