急求一题
  • 板块学术版
  • 楼主qiu_tianyu
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/3 08:26
  • 上次更新2023/11/4 05:05:07
查看原帖
急求一题
539025
qiu_tianyu楼主2021/10/3 08:26
题1  计算概率
【问题描述】
小明有n个长度不一的小木棍,这些木棍的长度都是正整数。小明的父亲想和小明做一个游戏。他规定一个整数长度l,让小明闭着眼睛从n个木棍中随便拿出两个。如果两个木棍的长度总和小于等于l,则小明胜,否则小明的父亲胜。小明想知道他胜出的概率究竟有多大。
【输入文件】
输入包含两行。第一行为两个整数n和l,其中n和l都不超过100000。第二行包含n个整数,分别为n个木棍的长度。
【输出文件】
输出包含一个实数,小明胜出的概率,保留两位小数。
【输入样例】
4 5
1 2 3 4
【输出样例】
0.67

我的代码超时...

#include<bits/stdc++.h>
using namespace std;
int a[5000001],n,l,ans;
int main()
{
	freopen("calculate.in","r",stdin);
	freopen("calculate.out","w",stdout);
	cin>>n>>l;
	int zong=(n*n-n)/2;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n-1;i++)
	{
		int j=n;
		while(a[i]+a[j]>l&&i<j)
		{
			--j;
		} 
		ans+=j-i;
		if(i>=j) break;
	}
	printf("%.2lf",ans*1.0/zong);
	return 0;
}

求dalao帮助

2021/10/3 08:26
加载中...