习题10-3 UVA 1643 Angle and Squares 角度和正方形
来源:互联网 发布:淘宝网折叠床 编辑:程序博客网 时间:2024/05/19 03:22
大体题意:
给你一个第一象限的一个角,在给你n个正方形的边长,问这个角和正方形围成面积的最大值!
样例就给了一个一个正方形,完全不好找规律,但求出样例后发现,发现正方形和y轴,x轴是平行的。
就可以猜测,n个正方形的摆放也一定是与y轴,x轴平行的,剩下的就是正方形之间如何摆放了,很显然是他们对角线共线的时候,,(其实看了学长的博客知道的)
然后就是求可以了,
求解有多种办法,在这里给出两个:
①:先求三角形ABH面积加上OAH的面积,其中三角形ABH可拆成ATB+BTH,其中tan∠TBH = k1,这样这个三角形可以解决。
在一个就是三角形AOH了,可过A做x轴的垂线,其中tan∠BOX = k1,tan∠AOX = k2,这样也可联立方程求解!
最后相加即可!
②:可联立方程求出A,B的坐标,最后根据叉乘求解!
这个题有个坑,K2不一定大于K1,注意交换一下就行了(错了好多次!)
代码①:
#include<cstdio>#include<algorithm>using namespace std;const double eps = 1e-8;int main(){ int N; while(scanf("%d",&N) == 1 && N){ double x,y; scanf("%lf%lf",&x,&y);double k2 = y/x; scanf("%lf%lf",&x,&y);double k1 = y/x; if (k2 < k1)swap(k2,k1); double sum=0,k,sums=0,s=0; for (int i = 0; i < N; ++i){ scanf("%lf",&k); sum+=k; s+=k*k/2.0; } sums+=sum*(1.0+k1)*sum/2.0-s; x=(1.0+k1)*sum/(k2-k1); sums+=(x*(k1*x+k1*sum+sum)-x*k1*x)/2.0; printf("%.3lf\n",sums+eps); } return 0;}
0 0
- 习题10-3 UVA 1643 Angle and Squares 角度和正方形
- Angle and Squares UVA
- 习题10-3 角度和正方形 UVa1643
- UVa 1643 - Angle and Squares(叉乘求面积)
- UVa1643 - Angle and Squares(几何)
- UVa 201 Squares(正方形)
- UVa 201 Squares(正方形)
- 紫书章四习题 2 Squares UVA
- UVA 1643(p343)----Angles and Squares
- 角度 Angle
- 习题 4-2 Squares UVa 201
- uva201正方形squares
- 正方形(squares,UVa201)
- 算法竞赛入门经典(第2版)习题4-2 正方形 Squares UVa201
- 算法竞赛入门经典 第二版 习题4-2 正方形 Squares uva201
- 习题7-6 重叠的正方形(Overlapping Squares, Xia'an 2006, UVa12113)
- 如何求sin(angle),其中angle用角度表示。
- 习题4-2 正方形
- 前端基础笔记HTML&CSS&JS
- 内部类
- C++对象的动态建立和释放
- Linux文件权限与目录总结
- 第11讲项目3——如何买玫瑰?
- 习题10-3 UVA 1643 Angle and Squares 角度和正方形
- 260. Single Number III LeetCode
- json-handle:json可视化工具
- 刷题、OJ 1903 有假币
- HDU 1242 Rescue(dfs深搜)
- C#成神之路<19> C#使用磁盘数据文件(3)
- km入门-----hdu2255
- 《线程》——多线程同步实例剖析
- Windows 下免费的 C++ 开发平台 EasilyGCC 正式发布