处女座的签到题

2024-06-17 21:18
文章标签 签到 处女座

本文主要是介绍处女座的签到题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【题目描述】

平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少?

【输入描述】

第一行T,表示样例的个数。

对于每一组样例,第一行两个整数n和k,

接下来n行,每行两个整数x,y表示点的坐标

T<=80

3<=n<=100

-10^9<=x,y<=10^9

对于每一组样例,保证任意两点不重合,且能构成的三角形的个数不小于k

【输出描述】

对于每一组样例,输出第k大三角形的面积,精确到小数点后两位(四舍五入)。

【样例】

示例1

输入
1
4 3
1 1
0 0
0 1
0 -1
输出
0.50

思路:

由于 x、y 坐标的绝对值最大为 1E9,因此三角形的面积最大可能会到 1E18,超出了 double 的存储范围

根据三角形的面积等于相邻两边叉积的一半可以知道三角形面积的两倍一定是一个整数,因此可用 long long 存储,最后进行特判来输出 .00 或 .50

根据给出的点,枚举点坐标,利用平面解析几何中的叉积公式即可求出三角形面积

通过枚举所有点,可以找出所有点组成的三角形的面积,对于找第 k 大的面积,可以利用 STL 中的 nth_element 来找

【源代码】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-6
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define N 1000001
#define LL long long
using namespace std;
pair<LL,LL> node[N];
LL edge[N];
LL calculate(int i,int j,int k){LL x1=node[i].first,y1=node[i].second;LL x2=node[j].first,y2=node[j].second;LL x3=node[k].first,y3=node[k].second;return abs(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
}
int main(){int t;scanf("%d",&t);while(t--){int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%lld%lld",&node[i].first,&node[i].second);int edgeCnt=0;for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)for(int k=j+1;k<=n;k++)edge[edgeCnt++]=calculate(i,j,k);nth_element(edge,edge+edgeCnt-k,edge+edgeCnt);if(edge[edgeCnt-k]%2)printf("%lld.50\n",edge[edgeCnt-k]/2);elseprintf("%lld.00\n",edge[edgeCnt-k]/2);}return 0;
}

 

这篇关于处女座的签到题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070507

相关文章

黑马点评10——用户签到-BitMap数据结构

文章目录 BitMap用法签到功能签到统计 BitMap用法 其实数据库完全可以实现签到功能 但签到数据比较大,借鉴签到卡的思想 布隆过滤器也是使用BitMap实现的. 签到功能 因为是当前用户的当天,所以保存需要的年月日不需要参数,可以直接获取。 @Overridepublic Result sign() {// 1. 获取当前登录用户Long userId

开源-基于J2EE分布式架构的会议管理系统,支持会议资源管理,预订会议,冲突检测,提醒与签到

自20世纪末至21世纪初,数字化和互联网技术的迅猛发展彻底改变了工作方式和商业模式。企业迅速采用电子邮件、即时通讯和在线会议等数字工具以提升沟通效率。 在信息爆炸的时代,工作中面临的信息量剧增,而企业对效率和生产力的要求也日益提高。有效的会议管理和办公自动化成为缩短周期、减少错误和提升决策质量的关键。云计算的广泛应用和移动设备的普及使得办公软件需要跨平台运行,无缝集成,以便用户能够在各种设备上高

145. 利用 Redis Bitmap实践: 用户签到统计

文章目录 一、Redis Bitmap简介二、Bitmap 的主要应用三、Go使用Redis实现签到统计用户签到查询用户签到状态统计今年累计签到天数统计当月的签到情况 总结 在现代应用程序中,用户签到是一个常见的功能。我们通常使用 MySQL 数据库来存储用户的签到记录。然而,随着用户数量的增加,数据库中的记录将会随时间和用户量线性增长,这不仅增加了存储的负担,而且可能影响查询效率

基于人脸识别签到的会议管理系统

一、项目概述 Hi,大家好,今天分享的项目是《基于人脸识别签到的会议管理系统》。 传统的会议管理模式,会议信息主要以纸质媒介的方式表现,存在资源浪费、应变能力差、效率低等问题。随着社会发展的不断进步,企业的会议管理形式也随之更新变化,倾向于往无纸化、智能化的方向发展。基于人脸识别的会议管理系统,根据参会者的会议参会情况,智能邮件提醒参会者会议时间,同时采用参会人员人脸比对进行会议签到,提高了签

分享一个自用小功能--微信公众号签到

文章同步发布在我的博客:ZKeeer’s Blog 随便转载,就说是你写的 最近事情比较多,自己一直用着的微信公众号签到一直没有分享出来,今天简单的介绍一下。话不多说,都在图里和代码里了。 可惜,糗百并不需要签到… 这个小功能就是简单的读取文件保存的签到口令、时间等数据,进行判断和签到。目前只实现了每天签到一次,并不是定时签到,也不是按时签到。没有实现设置签到时间和次数。大致如下

《移动端签到》——用XML灵活配置变量

公司的考勤功能这就要上线,在签到这个模块中,由于签到功能只能在公司内部使用,也就是在一个固定的范围内使用,没有像钉钉那样有外勤签到,随着版本的升级,有一个这样的需求,每个公司的地理位置不同(经纬度就不同),公司的上下班时间不同,而且这些东西有可能是变化的,这就导致了统计签到记录的信息不同。   以前这些信息时写死的,不容易变更,本来我想在数据库中设计一张表来维护这些变量,当然,只有管理员才可

《移动端签到》——利用 JavaScript API实现定位

小编在做签到项目的时候,定位可是个不可缺少的功能,当我们签到时,我们只能在公司里签到,怎样判断你是否在公司里面哪——定位?定位可以将我们的详细的经纬度找出来,然后根据经纬度我们可以逆解析位置的详细信息,比如说哪个城市啦,街道地址等等。   手机定位大约分为两种:   1、GPS定位:通过接收卫星信号,直接得到手机的位置坐标。(不需要联网,可以完全离线定位,但是必须在天空比较开阔的地方,否则

《移动端签到》——统计

最近小编在做一个签到统计项目,项目的大概需求是这样的:一个人每天可以打卡,上班的人需要每天最少打两次卡,上班打一次,下班打一次,但是一天可以打多次,只要打了多次卡,这时候问题就来,比如说一天一共员工打了十次卡,那哪一条算上班打卡,哪一条算下班打卡哪?经过领导审批,在这每一天的打卡记录中,我们按时间排序,第一条算上班,最后一条算下班。下面看看具体的代码功能实现吧。    后台代码统计某个月里

用电子表单替代纸质表格,签到报名、出入登记更轻松

用纸质表格收集信息时,常常会出现数据丢失、不易统计等问题。我们可以搭建电子表单来代替线下纸质表格,进行信息收集、记录数据。 这些数据会保存在账号下,可以导出Excel或PDF进行存档;也可以根据企业要求自定义PDF导出格式。 并且,通过表单设置功能的相互结合,可以实现更多进阶的场景应用,从而满足一些深度需求。 下面,就让我们一起来看看表单有哪些较为常见的场景应用吧。 签到报名 公司组织会