E题对拍一晚上没拍出来,通过率0%!

我的E是先找最大的腰,就是大于等于2中最大的,将取出来的腰减2,然后再找底,直接遍历所有的边,在合法的底中找到最大的底,求三角形面积最大值

代码如下

#include<bits/stdc++.h>
using namespace std;

const int N=1000100;
int a[N];
int l[N];
int main(){
	int T;
	cin>>T;
	while(T--){
		int n;
		scanf("%d",&n);
		int t=0;
		map<int,int> b;
		for(int i=1;i<=n;i++){
			scanf("%d%d",&(l[i]),&(a[i]));
			b[l[i]]+=a[i];
			if(b[l[i]]>=2){
				t=max(t,l[i]);
			}
		}
		if(t==0){
			cout<<-1<<endl;//没有一对腰直接返回-1
			continue;
		}
		b[t]-=2;
		int res=0;
		for(auto [x,y]:b){
			if(y>0&&t*2>x){//找合法的最大的底边
				res=max(res,x);
			}
		}
		if(res==0) cout<<-1<<endl;//不合法返回-1
		else{
			double s=t*2+res;
			s/=2;
			double ans=sqrt(s*(s-res)*(s-t)*(s-t));
			printf("%.15lf\n",ans);
		}
	}
	
	return 0;
}

全部评论
我就想知道错哪里了,求大佬告知解惑
点赞 回复 分享
发布于 2024-12-09 23:40 河北

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务