当前位置: 首页 > news >正文

深圳市鸿运通网站建设网站开发公司总汇

深圳市鸿运通网站建设,网站开发公司总汇,电子商务网站建设实习报告,免费ppt模板下载大全网站题目:(数三角) 题目描述(14届 C&C B组E题) 解题思路: 给定 n 个点的坐标,计算其中可以组成 等腰三角形 的三点组合数量。 核心条件:等腰三角形的定义是三角形的三条边中至少有…

题目:(数三角)

题目描述(14届 C&C++ B组E题)

解题思路:

给定 n 个点的坐标,计算其中可以组成 等腰三角形 的三点组合数量。

  1. 核心条件:等腰三角形的定义是三角形的三条边中至少有两条边的长度相等。

  2. 坐标平面上的三点是否共线:如果三点共线,它们无法组成三角形。该程序在计算三点组合时,会排除共线的情况。

  3. 解决方案:对于每个点 i,计算它与其他点之间的距离,并将具有相同距离的点分组,保存在一个映射表(map)中。随后从每组具有相同距离的点中,组合出两个点,构成一个等腰三角形。

代码实现(C++):

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pll = pair<ll, ll>;
double dis(ll x1, ll y1, ll x2, ll y2){return pow((x1 - x2), 2) + pow((y1-y2),2);
}
bool check(pll p1, pll p2, pll p3){//判断是否三点共线if(p1.second == p2.second || p1.second == p3.second)  return p1.second == p2.second && p1.second == p3.second;double a = (p1.first - p2.first) * 1.0 / (p1.second-p2.second);double b = (p1.first - p3.first) * 1.0 / (p1.second-p3.second);return abs(a - b) < 1e-6;
}
int main() {ll n; cin >> n;vector<pll> arr;for (int i = 0; i < n; ++i) {ll x, y;cin >> x >> y;arr.emplace_back(x, y);}ll ans = 0;//equ[i]存储的是第i个点所对应的map表//map表的含义是 有哪些点到第i个点的距离为key,这些点的下标用一个vector收集vector<map<double,vector<int>>> equ(n);for(int i = 0; i < n; ++i){auto m= equ[i];for(int j = 0; j < n; ++j){//遍历其他的所有点,在map中记录相等距离if(i != j){pll p1 = arr[i]; pll p2 = arr[j];double d = dis(p1.first,p1.second,p2.first,p2.second);m[d].push_back(j);}}//收集完成之后,遍历这张map表for(const auto& [k,v] : m){for(int a = 0; a < v.size(); ++a){ //从到当前点的距离相等的点之中选取两个点a,bfor(int b = a + 1; b < v.size(); ++b){if(!check(arr[i],arr[v[a]],arr[v[b]])){//只要不是三点共线ans++;}}}}}cout << ans;
}

得到运行结果:

代码分析: 

  • 距离计算dis 函数计算两个点之间的欧几里得距离的平方,这样可以避免使用浮点运算。

  • 三点共线判断check 函数通过检查斜率是否相等来判断三点是否共线。通过分段计算和比较斜率来避免浮点数精度误差。

  • 构建距离映射:对于每个点 iii,计算它到其他点的距离,并使用 map 将这些距离相等的点分组。

  • 等腰三角形组合计数:从距离相等的点中选择两个不同的点与当前点 iii 组合成三角形,检查是否共线。若不是共线,则计数增加。

难度分析

⭐️⭐️⭐️⭐️

总结

  • 时间复杂度:该算法的复杂度为 O\left ( n^{3} \right ),因为它使用三重循环来枚举所有三点组合。

  • 空间复杂度:使用了 map 来存储每个点到其他点的距离信息,相应的空间复杂度为 O\left ( n^{2} \right )

http://www.yayakq.cn/news/529073/

相关文章:

  • 太原市制作网站网站关键词如何做优化
  • 济南哪里做网站微分销系统哪家比较好
  • 自己做外贸怎么找客户南阳seo长尾关键词
  • 有哪些做网站的wordpress修改内容
  • 网站首页域名如何设置访问快福建福州最新情况
  • 政务信息公开和网站建设自评网络舆情监测关键词
  • 域名访问网站下企业网站建设规划书的内容
  • 北京南站是高铁站吗网站建设与管理是什么意思
  • 网站建设推广方案模版动漫制作专业大学有哪些
  • 老网站权重低的原因网页制作培训费用多少
  • 怎么做二次元网站源码网站开发模板word
  • 网站如何做聚合页面网站建设企业网站建设
  • 网站建设的风险贵州贵州省住房和城乡建设厅网站
  • 四平建设局网站绿色营销案例100例
  • 学生做兼职的网站高仿奢侈手表网站
  • 网站开发实践意义做国外订单用哪个网站
  • 龙岗网站建设费用明细flash教程网站首页
  • 网站商城微信支付接口求网址
  • 某网站网站的设计与实现集团网站方案策划书
  • 零基础网站建设教程团队拓展
  • 网站备份网站编辑器无法显示
  • 做网站需要人在看吗嵌入式开发是干啥的
  • 上饶网站设计公司医院网站可以自己做吗
  • 标准通网站建设做竞拍网站
  • 哪个网站做ic好做旅行网站多少钱
  • 卫浴洁具网站模板微商代理怎么找货源
  • 清新县城乡规划建设局网站佛山省钱网站设计哪家便宜
  • 电子商务网站建设实训报告主要内容吉林省级建设行政主管部门政务网站
  • 网站建设一般多少钱要如何选择餐饮类网站建设达到的作用
  • 马来西亚做公路投标网站wordpress 绿色主题