一、三角形面积

已知三角形三个顶点在直角坐标系下的坐标分别为:
(2.3, 2.5)
(6.4, 3.1)
(5.1, 7.2)
求该三角形的面积。

【答案提交】
注意,要提交的是一个小数形式表示的浮点数。
要求精确到小数后3位,如不足3位,需要补零

方法一:海伦公式

已知三条边的长度可用海伦公式:
S=sqrt(p×(p−a)×(p−b)×(p−c))(p=a+b+c2)S= sqrt(p × (p-a) × (p-b) × (p-c))(p=\cfrac{a+b+c}{2})S=sqrt(p×(p−a)×(p−b)×(p−c))(p=2a+b+c​)

也可用一个同一个夹角的向量的叉积,假设:
12×(x1−x0)×(y2−y0)−(x2−x0)×(y1−y0)\cfrac{1}{2} × (x1-x0) × (y_2-y0) - (x2-x0) × (y1-y0)21​×(x1−x0)×(y2​−y0)−(x2−x0)×(y1−y0)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;struct point{double x,y;
};
double CrossProduct(point & v1, point & v2) {return 0.5*(v1.x*v2.y - v2.x*v1.y);
}
int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);point ps[3]={{2.3, 2.5}, {6.4, 3.1}, {5.1, 7.2}};double len[3];for (int i=0, k=0; i<2; i++)for (int j=i+1; j<3; j++, k++) {double dx=ps[i].x-ps[j].x, dy=ps[i].y-ps[j].y;len[k]=sqrt(dx*dx+dy*dy);}double a=len[0], b=len[1], c=len[2], p=(a+b+c)*0.5, area=sqrt(p*(p-a)*(p-b)*(p-c));cout << area << endl;//----------------------point v1={ps[1].x-ps[0].x, ps[1].y-ps[0].y};point v2={ps[2].x-ps[0].x, ps[2].y-ps[0].y};cout << CrossProduct(v1, v2);return 0;
}

二、阅兵方阵

x国要参加同盟阅兵活动。主办方要求每个加盟国派出的士兵恰好能组成 2 个方阵。x国发现弱小的 y国派出了130人的队伍,他们的士兵在行进中可以变换2种队形:

130 = 81 + 49 = 9^2 + 7^2
130 = 121 + 9 = 11^2 + 3^2

x国君很受刺激,觉得x国面积是y国的6倍,理应变出更多队形。于是他发号施令:我们要派出一支队伍,在行进中要变出 12 种队形!!!

手下人可惨了,要忙着计算至少多少人才能组成 12 种不同的双方阵。
请你利用计算机的优势来计算一下,至少需要多少士兵

方法一:平方数计数
#include<bits/stdc++.h>
using namespace std;
int main() {for (long num=1; ; num++) {int cnt=0;for (long i=1; i*i < num; i++) {int jj=num-i*i, j=sqrt(jj);if (j*j==jj)++cnt; if (cnt==24) {cout << num;return 0;}}}return 0;
}

二、版本分支

小明负责维护公司一个奇怪的项目。这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge)。
现在这个项目的代码一共有N个版本,编号1~N,其中1号版本是最初的版本。
除了1号版本之外,其他版本的代码都恰好有一个直接的父版本;即这N个版本形成了一棵以1为根的树形结构。

如下图就是一个可能的版本树:

  1/ \
2   3
|  / \
5 4   6

现在小明需要经常检查版本x是不是版本y的祖先版本。你能帮助小明吗?

输入
第一行包含两个整数N和Q,代表版本总数和查询总数。
以下N-1行,每行包含2个整数u和v,代表版本u是版本v的直接父版本。
再之后Q行,每行包含2个整数x和y,代表询问版本x是不是版本y的祖先版本。

输出
对于每个询问,输出YES或NO代表x是否是y的祖先。

样例输入
6 5
1 2
1 3
2 5
3 6
3 4
1 1
1 4
2 6
5 2
6 4
样例输出
YES
YES
NO
NO
NO

对于30%的数据,1 <= N <= 1000 1 <= Q <= 1000
对于100%的数据,1 <= N <= 100000 1 <= Q <= 100000

方法一:

从 x 的直接儿子开始找,直接儿子找不到就找儿子的儿子,儿子的儿子找不到就继续这样找,样例过了,但只能连30分都没有,为什么呢?

#include<bits/stdc++.h>
using namespace std;int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int N, Q; cin>>N>>Q;unordered_map<int, unordered_set<int>> sons;for (int i=1; i<N; i++) {int u, v; cin>>u>>v;sons[u].insert(v);}while (Q--) {int x, y; cin>>x>>y; if (x==y) cout <<"YES"<<'\n';else {int found=0;for (int son : sons[x]) {if (son==y) { found=1; } else for (int ss : sons[son]) {if (ss==y) { found=1; break;}}if (found) break;}cout << (found ? "YES" : "NO") << '\n';}}return 0;
}

参考别人的预处理思路:用递归预处理:将每个结点的所有子孙保存起来/…

#include<bits/stdc++.h>
using namespace std;const int N=1e5+5;
vector<int> sons[N];
vector<int> nex[N];vector<int> dfs(int u) {for (int v : nex[u]) {const auto& t=dfs(v);sons[u].insert(sons[u].end(), t.begin(), t.end());}sons[u].emplace_back(u);return sons[u];
}
int main() {std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int N, Q; cin>>N>>Q;for (int i=1; i<N; i++) {int u, v; cin>>u>>v;nex[u].emplace_back(v);}sons[1]=dfs(1);while (Q--) {int x, y; cin>>x>>y; cout << (find(sons[x].begin(), sons[x].end(), y) != sons[x].end() ? "YES" : "NO") << '\n';}return 0;
}

【树】B056_LQ_三角形面积 阅兵方阵 版本分支(递归预处理)相关推荐

  1. 2018年第九届蓝桥杯C/C++ A组国赛 —— 第二题:阅兵方阵

    标题:阅兵方阵 x国要参加同盟阅兵活动. 主办方要求每个加盟国派出的士兵恰好能组成 2 个方阵. x国发现弱小的 y国派出了130人的队伍,他们的士兵在行进中可以变换2种队形: 130 = 81 + ...

  2. java实现第九届蓝桥杯三角形面积

    三角形面积 小明最近在玩一款游戏.对游戏中的防御力很感兴趣. 我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2^d,B=3^d( ...

  3. 用“平面两点距离”求三角形面积及多边形面积

    不小于 3 边的多边形,都可以任一顶点发出的边切分为 n - 2 个三角形. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ Free:大咖免费&quo ...

  4. python求三角形面积步骤_python算三角形面积

    展开全部 代码如下: #!/usr/bin/python3 # -*- coding:utf-8 -*- """ @author:yaqon @file :shanjia ...

  5. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)

    链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...

  6. 编程三角形面积公式_三角形面积公式110式(英文版)

    点击上面蓝色文字关注杨志明数学角精华博览8年新课标I.5年新课标II.4年新课标III高考数学真题详细解析16年新课标I.9年新课标II.4年新课标III高考数学真题分类详解2020年高考数学重要专题 ...

  7. Java黑皮书课后题第8章:*8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积。编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积

    *8.32(几何:三角形面积)编写一个方法,使用下面的方法头,返回一个三角形的面积.编写一个程序,提示用户输入三角形的三个点,然后显示三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...

  8. Java黑皮书课后题第2章:*2.19(几何:三角形面积)编写程序,提示用户输入三角形的三个点(x1, y1)(x2, y2)(x3, y3),然后显示它的面积

    *2.19(几何:三角形面积)编写程序,提示用户输入三角形的三个点横纵坐标值,然后显示它的面积 题目 题目概述 运行示例 思路 代码 如何用嵌套的pow()写出两点距离公式 题目 题目概述 2.19( ...

  9. 2015年第六届蓝桥杯 - 省赛 - Java大学B组 - A. 三角形面积

    三角形面积 如[图1]所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. Ideas 这道题跟2018年第九届蓝桥杯 - ...

  10. 版本分支管理标准 - Trunk Based Development 主干开发模型

    之前分享过<版本分支管理标准 - Git Flow>,不过在实际使用过程中, 因为其有一定的复杂度,使用起来较为繁琐,所以一些人员较少的团队并不会使用这个方案. 在这基础上,一些新的分支管 ...

最新文章

  1. JavaScript深入理解对象方法——Object.entries()
  2. 技术总监需要会些什么?
  3. 安装mysql和memcached
  4. Linux下查找文件方法
  5. mysql having in_正确理解MySQL中的where和having的区别
  6. 《应用时间序列分析:R软件陪同》——导读
  7. Spring Cloud生态的构建
  8. 中英文字体名字对应表
  9. NEWS - InstallShield 2015 正式发布
  10. fwoa中做excel导入时page理解
  11. wing ide 3.x 中文设置
  12. Win10系列:VC++绘制几何图形2
  13. linux wc -l命令,Linux wc sort和uniq的用法
  14. VB程序设计算机,VB编程:编写一个过程,用来计算并输出 S=1+1/2+1/3+……+1/100 的值。...
  15. 微博上一些有用的话(四)
  16. CSS字体、文本属性
  17. 国网天津电缆公司带电检测典型案例分析
  18. TapTap推广统计逻辑
  19. 【期末不挂科 数据结构】第一章 绪论
  20. spring boot + gateway + nacos 网关统一代理

热门文章

  1. 计算理财产品收益的JS代码
  2. arduino蓝牙通讯代码_arduino蓝牙通讯
  3. 概念性知识与程序性知识的关系
  4. linux http error 401,出现HTTP: 401 的时候的解析思路
  5. 遭遇难题,走投无路到成功解决的心路历程 —— ORA12514:监听程序当前无法识别连接描述符中请求的服务
  6. Protocol buffer配置-生成jar包和java文件
  7. 关于Java的点点滴滴(1)——Static关键字
  8. Movist Pro for Mac 2.2.16 — 播放器
  9. android 自动打开第三方应用商店,Android应用自动跳转到应用市场详情页面的方法...
  10. mysql授权用户权限能用正则的形式_mysql创建用户及受权