牛客寒假算法集训营2
https://ac.nowcoder.com/acm/contest/327/A
A.处女座的签到题
题目描述
平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少?


/*


已知坐标求三角形的面积,最好的方法是求出相邻两个向量的叉积的绝对值(平行四边形面积)然后除以2
比如由三个点A(x1,y1),B(x2,y2),C(x3,y3)构成的三角形ABC
求它面积的公式为:
|向量AB×向量AC| / 2 = |(x2-x1)(y3-y1)-(x3-x1)(y2-y1)| / 2;
关于向量叉积求三角形面积,这里有一篇写的十分好比较全的博客:传送门


对于本题,因为要除以2,并且要求保留2位小数,叉积的绝对值要不是奇数要不就是偶数,所以可以把叉积绝对值算出来用long long数组(喜欢省内存)存起来,然后分奇数偶数讨论保留的后两位小数是什么(even : %lld.00 odd :%lld.50)~
然后要求第K大的面积,时间复杂度为O(n),可以用快排的思想(“快速选择算法”),也可以用STL里的nth_element;


nth_element基本用法和sort有点像:
nth_element作用为求第n大的元素,并把它放在第n位置上,如果数组是从0开始存的数据,那么用法为nth_element(a,a+k-1,a+n,cmp);
第一个为数组首地址,第二个为第K个数的地址,第三个为末地址,最后一个是排序方式(不写cmp,默认是升序的)
注意:nth_element()函数不过将第n大的数排好了位置,并不返回值


*/
AC_code:

#include <stdio.h>
#include <algorithm>
#define ll long long
const ll  N = 10e6;
using namespace std;
struct date
{ll x;ll y;
};
bool cmp(ll a,ll b)
{return a > b;
}
long long a[N];
int main()
{int t,n,k;scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);date d[n+2];for(int i = 0; i < n; i++){scanf("%lld%lld",&d[i].x,&d[i].y);}ll v = 0,w;for(int i = 0; i < n; i++){for(int j = i+1; j < n; j++){for(int k = j+1; k < n; k++){w = (d[j].x-d[i].x)*(d[k].y-d[i].y)-(d[k].x-d[i].x)*(d[j].y-d[i].y);a[v++] = w > 0 ? w : - w;}}}nth_element(a,a+k-1,a+v,cmp);if(a[k-1]%2==0)printf("%lld.00\n",a[k-1]/2);elseprintf("%lld.50\n",a[k-1]/2);}return 0;
}

利用向量叉积求三角形的面积(+STL:nth_element求第K大的数)相关推荐

  1. 已知三角形三点坐标, 求三角形的面积

    摘自:http://blog.sina.com.cn/s/blog_4cddcaa3010008u7.html 已知三角形三点坐标, 求三角形的面积 发表时间:2004-8-10 作者:未知[获得此文 ...

  2. java继承求三角形圆形面积_java求三角形面积

    (min>c)min=c; if(min>d)min=d; System.out.println("min is "+min); } } } 15.test30003求 ...

  3. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  4. python 三角形的三个边长a,b,c ,求三角形的面积?

    已知:三角形的三个边长a,b,c ,求三角形的面积? 海伦公式: s=(a+b+c)/2 import cmath a = 3 b = 4 c = 5p = 0.5*(a+b+c) m = p*(p- ...

  5. C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...

    C语言 经典常用代码 C语言常用经典代码 求三角形的面积. 把百分制成绩转换为ABC等级制. 其两个自然数的最大公约数和最小公倍数. 求输入n个数的平均值. 求一个数各个位上的数字之和. 求n个数的阶 ...

  6. 已知三角形三边求面积的c语言程序,已知三角形三边分别为4,5,6,求三角形的面积。用c语言编写程序...

    已知三角形三边分别为4,5,6,求三角形的面积.用c语言编写程序 关注:114  答案:6  mip版 解决时间 2021-01-18 16:33 提问者谁把流年搁浅 2021-01-17 23:52 ...

  7. 1014: 求三角形的面积 C语言

    1014: 求三角形的面积 时间限制: 1 Sec 内存限制: 30 MB 提交: 36556 解决: 26725 [状态] [讨论版] [提交] [命题人:admin] 题目描述 给出三角形的三条边 ...

  8. C语言-- 输入三角形的三边长,求三角形的面积。

    分析:已知三角形的三边长度求三角形的面积,要使用海伦公式: #include<stdio.h> #include<math.h> void main() {float a,b, ...

  9. Java:1014: 求三角形的面积

    1014: 求三角形的面积 时间限制: 1 Sec  内存限制: 30 MB 提交: 43703  解决: 32144 [状态] [讨论版] [提交] [命题人:admin] 题目描述 给出三角形的三 ...

最新文章

  1. C++vector容器学习
  2. java 根据当前时间获得一周日期
  3. 三分钟学会.NET Core Jwt 策略授权认证
  4. 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
  5. 小记一下:CentOS里用多个iso镜像安装Xen虚拟机
  6. cubemx spi 中断_STM32 SPI在使用中断时丢弃数据
  7. c语言全缓冲,C语言缓冲区 - osc_8b4n157m的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. psp模拟java_PSP超强JAVA模拟器 PSPKVM v0.5 发布下载
  9. PHP 图片转PDF
  10. UE4编辑器ToolBar扩展
  11. Python 学习4-集合、序列
  12. Android移动开发-Android设备利用光线传感器监测光照强度的实现
  13. Q-criterion- definition and post-processing
  14. 2022茶艺师(中级)国家题库模拟考试平台操作
  15. 蔡氏混沌电路matlab程序,蔡氏混沌电路简介——Chuaapos;s-Circut.pptx-全文可读
  16. ROM修改---修改本机的mac地址
  17. WP 微信导出聊天记录备份到电脑
  18. java jit_Java的JIT
  19. 勇者斗恶龙(The Dragon of Loowater, UVa 11292)
  20. js点击网页背景特效和js打字状态特效代码

热门文章

  1. python在线翻译脚本_用python实现百度翻译的示例代码
  2. raid读写速度对比_U盘读写速度哪家强?4款全金属USB3.0的U盘读写速度对比
  3. 哎,辣鸡代码书写准则
  4. 超干货!当初我要是这么学习操作系统就好了(附带思维导图)
  5. 计算机用的机械硬盘的工作原理,为啥一震就坏?机械硬盘的构造原理是什么?...
  6. java executebatch_JDBC批量执行executeBatch
  7. python引入redis_十六大Python面试题!看完面试官给了我40K的薪资
  8. java中浮点数的表示_java 浮点数表示法
  9. OpenCV-文档扫描OCR识别-04
  10. 冻结拆分_还不会固定表头?速来围观Excel冻结窗格实战教程