小红关鸡(双指针)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述

有nnn个鸡窝排成一排,第iii个鸡窝在数轴上的坐标是xix_ixi​,有一只小鸡会随机的在一个鸡窝中出现。小红准备在数轴上放置两个栅栏,如果小鸡出现在两个栅栏中间(包括端点),则将被小红关住。为了方便管理,两个栅栏之间的最大距离不能超过kkk。现在小红希望最大化成功“关鸡”的概率,请你帮小红求出这个概率。

输入描述:

第一行输入两个正整数n,kn,kn,k,代表鸡的数量和栅栏的最远距离。
第二行输入nnn个整数xix_ixi​,代表每个鸡的位置。
1≤n≤1051\leq n \leq 10^51≤n≤105
1≤k≤1091 \leq k \leq 10^91≤k≤109
−109≤xi≤109-10^9\leq x_i \leq 10^9−109≤xi​≤109

输出描述:

一个浮点数,代表小红成功关鸡的概率。如果你的答案和标准答案的误差不超过10−410^{-4}10−4,则认为你的答案正确。

示例1

输入

复制5 5 2 3 -1 4 9

5 5
2 3 -1 4 9

输出

复制0.8

0.8

说明

小红将两个栅栏放置在 -1 和 4 这两个点,这样有 80% 的概率能成功关鸡。

解题思路

这题我一开始是想着暴力两个指针去找小于等于k的包含数最大的区间,但是这样时间复杂度来到了O(n²),明显是过不了的。比赛结束后本人和同学讨论才知道用双指针写(可能也想到了吧,只是不会写)。双指针直接只需要用一个循环,时间复杂度大大减小,用i(快指针)和j(慢指针)来移动。

我总结了几点用双指针思想的题型

1.往往用暴力能有答案,但是时间一般会超,用到两个循环。

2.数据一般是有单调性的,着点和二分挺像的。

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<vector>
#include<math.h>
#include<iomanip>
#include<set>
#include<queue>
#include<stack> 
#include<map>
#include<list>
#include <stdlib.h>
using namespace std;
int n, k,a[100005],ans=1;

int main()
{
	cin >> n>>k;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	sort(a, a + n);
	for (int i = 0, j = 0; i < n; i++)
	{
		if (a[i] - a[j]<=k)
		{
			ans = max(i - j + 1, ans);
		}
		else
		{
			j++;
		}
	}
	cout <<fixed<<setprecision(4)<< double(ans) / n;
}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小红书dataset是指包含了关于小红书平台用户和内容的数据集。小红书是一款以分享购物心得、生活方式和美妆相关内容为主的社交平台,用户可以在平台上发布笔记、评论、点赞等行为,以及搜索和关注感兴趣的话题或用户。 小红书dataset包含了用户信息、用户行为数据、内容数据等多个方面的信息。用户信息包括用户名、性别、年龄、所在地等基本信息,可以用于用户画像和分析用户特征。用户行为数据包括用户在平台上的各种行为操作,如发布笔记、评论、点赞、关注等,这些数据可以用来研究用户的行为偏好和社交网络结构。内容数据包括用户发布的笔记、图片、视频等内容,这些内容包含了购物心得、产品评测、生活方式分享等,可以用于分析产品趋势、影响力评估和用户喜好。 通过对小红书dataset的分析,可以得出许多有价值的研究结论。例如,可以通过分析用户行为数据,了解用户在平台上的活跃度和行为习惯,为平台运营和推广提供指导意见;可以通过分析用户发布的内容数据,发现不同领域的热门产品和用户的评价,供商家和品牌进行市场调研和产品改进;还可以通过分析用户信息和用户行为数据,构建用户画像,以便更好地进行个性化推荐和精准营销。 小红书dataset的应用前景广阔,不仅可以帮助小红书平台优化用户体验和提高商业价值,还可以为学术研究提供重要数据支持,推动社会科学的发展。希望小红书dataset的开放使用可以进一步促进数据分享和共享,激发更多创新和价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值