E.智乃的小球

news/2025/2/21 7:20:58/文章来源:https://www.cnblogs.com/benscode/p/18723907

题目链接:https://ac.nowcoder.com/acm/contest/95335/E

题意:

有n个小球,部分向左移动,部分向右移动,碰撞后交换速度。求第k次碰撞发生的时间

思路:

二分答案,当t增大,球碰撞次数增加,反之一定减小
可以把球看作穿过彼此,并认为向左移动的小球不动,向右移动的球速度翻倍
具体实现使用双指针
不清楚为什么第二个版本二分通不过))

#include<bits/stdc++.h>
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define pb push_back
#define endl "\n"
#pragma GCC optimize(3)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const ll llmax=LLONG_MAX;
const int maxn=1e5+5;
const int mod=1e9+7;
int n,k;
vector<int>a;
vector<int>b;
bool check(double t)
{int cnt=0;int p=0,q=0;for(int i=0;i<a.size();i++){int l=a[i],r=a[i]+t*2;while(l>b[p]&&p<b.size())p++;while(r>=b[q]&&q<b.size())q++;cnt+=(q-p);}return cnt>=k;	
}signed main()
{ios::sync_with_stdio(false),cin.tie(0);cin>>n>>k;rep(i,1,n){int p,v;cin>>p>>v;if(v==1){a.pb(p);}else b.pb(p);}sort(a.begin(),a.end());sort(b.begin(),b.end());double l=0,r=1e9+5;while((r-l)>=1e-7){double mid= (l+r)/2;if(check(mid)){r=mid-1e-7;}else{l=mid+1e-7;}}if(r==1e9+5)cout<<"No";else{cout<<"Yes"<<endl;cout<<fixed<<setprecision(6)<<r;}return 0;
}
#include<bits/stdc++.h>
#define int long long
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define pb push_back
#define endl "\n"
#pragma GCC optimize(3)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const ll llmax=LLONG_MAX;
const int maxn=1e5+5;
const int mod=1e9+7;
int n,k;
vector<int>a;
vector<int>b;
int check(double t)
{int cnt=0;int p=0,q=0;for(int i=0;i<a.size();i++){int l=a[i],r=a[i]+t*2;while(l>b[p]&&p<b.size())p++;while(r>=b[q]&&q<b.size())q++;cnt+=(q-p);}return cnt;	
}signed main()
{ios::sync_with_stdio(false),cin.tie(0);cin>>n>>k;rep(i,1,n){int p,v;cin>>p>>v;if(v==1){a.pb(p);}else b.pb(p);}sort(a.begin(),a.end());sort(b.begin(),b.end());double l=0,r=1e9+5;double res=inf;while((r-l)>=1e-7){double mid= (l+r)/2;if(check(mid)==k){res=mid;r=mid-1e-7;}else if(check(mid)<k){l=mid+1e-6;}else{r=mid-1e-6;}}if(res==inf)cout<<"No";else{cout<<"Yes"<<endl;cout<<fixed<<setprecision(6)<<res;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/886653.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10款最适合大数据项目管理工具(2025年)

在当今数据驱动的时代,大数据项目管理已成为企业成功的关键因素之一。随着数据量的爆炸式增长,传统的项目管理方法已无法满足需求,企业需要借助专业的软件工具来高效管理复杂的大数据项目。本文将为您介绍10款最适合大数据项目管理的软件工具,帮助您在2025年及未来更好地应…

第十六章 采购管理(2025年详细解析版)

目录导学什么是采购管理?定义内容16.1 管理基础什么是协议定义协议的形式什么是合同定义内容合同注意事项项目采购与项目管理项目买卖方内部卖方招投标的流程发展趋势和新兴实践(了解)采购新趋势16.2 项目采购管理过程项目采购管理过程ITTO裁剪时需要考虑的因素在敏捷或适应…

面试官:说说你项目中JWT的执行流程?

JWT 在目前的项目开发中使用到的频率是非常高的,因此它也是面试常问的一类问题,所以今天我们就来看看“项目中 JWT 的执行流程?”这个问题。 1.什么是 JWT? JWT(JSON Web Token) 是一种开放标准(RFC 7519),用于在网络应用间安全传输信息,通常用于身份验证和信息交换。…

【日记】文竹已经长得比路灯还要高了(1069 字)

正文最近陷入了一个深刻的情感漩涡。一边有些嫌恶爱情,一边又为它焦虑。一边觉得自己只有友谊已经足够了,一边又看见大多数友情并不能如爱情一般陪伴那样长的时间,不说二三十年,甚至不到十年可能便会消亡。觉得其实自己仍然需要它。然而目前这个不太喜欢、又需要一个东西的…

苹果使用AI让皮克斯的灯具复活了。

苹果让皮克斯著名的开场灯具复活,发布了一项新的研究,其中描述它的形容词并不是你通常会在AI研究中使用的那些。 这与我们习惯的一切都不同。它在技术上并不更聪明、更强大,也不是那些害怕AI的人噩梦般的存在。 相反,它似乎是科技巨头首次尝试以不同的方向提升AI和机器人智…

react-native-snap-carousel 轮播图卡在中间的问题

今天在使用react-native-snap-carousel组件的时候,发现一个问题,就是轮播有时候会卡在两个轮播图之间,不左不右的。研究了半天,才发现,开启动量滚动即可 关于enableMomentum的解释 enableMomentum 是 React Native 中 ScrollView 和 FlatList 组件的一个属性,用于控制滚动…

安川机器人维修JZRCR - YPP01 - 1示教器按键故障

在工业生产领域,安川机器人发挥着极为重要的作用。然而,像JZRCR - YPP01 - 1示教器按键出现故障这样的问题会影响机器人的正常运行。一、安川机器人JZRCR - YPP01 - 1示教器按键故障的初步检查外观检查首先,在进行任何深入维修之前,对示教器进行外观检查是必要的。检查按键…

Svelte 最新中文文档教程(13)—— 样式

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

数据结构选讲-1 总结

数据结构选讲-1 总结 线段树技巧及其应用。 前言 出题特点:树形 \(polylog\) 数据结构为主,尤其线段树。 侧重数据结构维护算法,使用数据结构进行统计。 强调“从具体情境中抽象出合适的数据及目标”的过程。数据结构本质上是要在数据和目标不变的情况下,优化算法复杂度,降…

Jenkins通过私钥连接Node

本文只要提供一种Jenkins通过私钥连接Node的方法。方法不区分Jenkins版本。大体步骤: (1)生成密钥对 (2)Jenkins上使用私钥配置Credentials (3)Node上配置authorized_keys 文件 (4)添加Node实例 下面演示一个实例。 需求:Jenkins通过私钥方式连接Node(app用户)(1)…

基于条件的访问控制——RBAC

网络威胁极为普遍,无论是公共组织还是私营组织,都面临着数据泄露的风险。一个拥有过多权限的账户,就足以让黑客渗透整个组织。为保护组织免受此类事件的影响,可以根据用户的角色和职责来分配权限。基于角色的访问控制(RBAC)便应运而生。 一、什么是基于条件的访问控制(R…