处女座的沙比签到题 三角形面积公式

编程入门 行业动态 更新时间:2024-10-09 06:27:35

处女座的沙比签到题 三<a href=https://www.elefans.com/category/jswz/34/1769024.html style=角形面积公式"/>

处女座的沙比签到题 三角形面积公式

 

题目

 

参考代码

 

思路:

  一个三角形的面积=1/2 absinC,即1/2| a x b | (a b为向量),利用矩阵,算得S=1/2 * abs(x1*y2 - x2*y1) (x1,y1,是向量a的横纵坐标。x2,y2是向量b的横纵坐标)。  证明

  由此,三角形面积的两倍 一定是个整数,所以三角形面积的小数点后面要么 .00,要么 .50 。用double和海伦公式存入数组 sort 排序会超时,应该是两两比较的计算次数过多,因为是double。

  关于函数 nth_element()

  优先队列 默认从小到大自动排序。

  priority_queue<int, vector<int>,greater<int> >q; //从大到小

 

#include<iostream>
#include<cstdio>
#include <cctype>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=1e9+7;
const int INF= 0x3f3f3f3f;
const int N=1e6+5;int n,m;
ll x[105],y[105];int main()
{int T; cin>>T;ll x1,x2,x3,y1,y2,y3;ll sum;while(T--){priority_queue<ll,vector<ll>,greater<ll> >q;cin>>n>>m;for(int i=1;i<=n;i++)scanf("%lld%lld",&x[i],&y[i]);for(int i=1;i<=n-2;i++){for(int j=i+1;j<=n-1;j++){for(int k=j+1;k<=n;k++){x1=x[i]-x[k];x2=x[j]-x[k];y1=y[i]-y[k];y2=y[j]-y[k];sum=abs(x1*y2-x2*y1);if(sum==0) continue;if(q.size()<m)q.push(sum);else if(q.top()<sum){q.pop();q.push(sum);}}}}ll ans=q.top();if(ans%2==0)printf("%lld.00\n",ans/2);elseprintf("%lld.50\n",ans/2);}}

 

转载于:.html

更多推荐

处女座的沙比签到题 三角形面积公式

本文发布于:2024-03-13 00:19:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732759.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:角形   处女座   公式   面积

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!