Leading Robots | 贪心 单调栈

news/2025/3/13 20:40:57/文章来源:https://www.cnblogs.com/tzstlove/p/18770903


题意:机器人比赛跑步,知道了初始位置,和加速度,求有多少机器人能成为领头羊(在某一刻跑到第一名,不能并列)
思路:因为知道了加速度,所以很容易知道,当加速度最快的成为了领头羊,其他机器人就没机会了,并且,当一个机器人在初始位置和加速度都比前面的机器人小的话,也不可能。根据这两个特性,我们就可以通过将机器人的初始位子从大到小进行比较,如果一个机器人的加速度比前面所有机器人的加速度都要大,那这个机器人能当,不然不可能

点击查看代码

int sgn(double x) // 因为是double,需要用到精度
{if (fabs(x) < ep)return 0;if (x > 0)return 1;return -1;
}struct point
{ll a, p;
} a[N];
int cmp(point a, point b) // 按照位置进行排序
{if (a.p == b.p)return a.a > b.a;return a.p > b.p;
}
vector<int> v;
int n;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while (t--){cin >> n;a[n + 1].a = a[n + 1].p = 0;for (int i = 1; i <= n; i++)cin >> a[i].p >> a[i].a;sort(a + 1, a + 1 + n, cmp);// 加速度最大的那个人肯定是最后的赢家ll ma = a[1].a;stack<PII> s; // s存储的是从能超过最后一个机器人的下标,时间从小到大s.push({1, 1});for (int i = 2; i <= n; i++){if (a[i].a <= ma)continue;// 如果加速度小于且本来位置比较靠后的话是不可能超过前面那个人的ma = a[i].a;int y = 1; // y储存的是在i之前的超过最后一个机器人的最快机器人的下标while (!s.empty()){PII from = s.top();int o = from.first;int r = from.second;double t2 = sqrt(2.0 * (a[i].p - a[o].p) / (a[o].a - a[i].a)); // 超过的时间就是距离除以速度差double t1 = 0;if (o != r)t1 = sqrt(2.0 * (a[o].p - a[r].p) / (a[r].a - a[o].a));if (sgn(t2 - t1) <= 0)// 利用精度进行比较{y = r;s.pop();// 如果机器人i的速度比机器人r的速度快,说明在num1超过num2之前i就超过了num1,更新最快机器人的位置}else{y = o;break;}}s.push({i, y});// 因为这个人的加速度最大,所以他在这前i个人中肯定是最后的赢家}int ans = s.size();while (!s.empty()){PII from = s.top();s.pop();int y = from.first;if (a[y].a == a[y + 1].a && a[y].p == a[y + 1].p) // 判断是否有一起超过的情况ans--;}cout << ans << "\n";}
}

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

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

相关文章

鸿蒙用户首选项数据持久化

用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。当用户希望有一个全局唯一存储的地方,可以采用用户首选项来进行存储。Preferences会将该数据缓存在内存中,当用户读取的时候,能够快速从内存中获取数据,当需要持久化时可…

基于 .NET Blazor 开源、低代码、易扩展的插件开发框架

前言 今天大姚给大家分享一个基于 .NET Blazor 开源的轻量级、跨平台、低代码、易扩展的插件开发框架:Known。 项目介绍 Known 是一个基于 Blazor 的轻量级、跨平台、低代码、易扩展的插件开发框架。它旨在帮助开发者快速构建和扩展应用程序,提供了一整套工具和组件,从前端到…

unity Terrain绘制树时提示所选树没有LOD组解决方法

个人理解LOD组是一种unity优化资源显示的方法,为了节省资源, 如果刷绘的预制件没有LOD组,刷多了无论远近都是显示状态,就很卡解决方法:给需要绘制的树预制件添加LOD组 组件 根据不同阶段放入不同显示的模型或者网格,预制件添加后记得保存应用,这样就可以在Terrain绘制树了 时间…

什么是自然语言的概率分布

自然语言的概率分布,是指在自然语言处理(NLP)中,对语言单位(如单词、短语、句子等)出现的概率进行建模和描述的方式。 它反映了语言使用的统计规律,即某些语言单位比其他单位更常出现。 核心思想: 自然语言并非随机的字符组合,而是遵循一定的统计规律。有些单词、短语…

GESP-Lv8总结(202409)

GESP C++ 八级 2024 年 09 月 题目链接 错题 ( T1 ) 下面关于C++类和对象的说法,错误的是 A. 类的析构函数可以为虚函数 B. 类的构造函数不可以为虚函数 C. class中成员的默认访问权限为private D. struct中成员的默认访问权限为private \(\color{red}{根本不会:)}\) 这道题有…

20242934 2024-2025-2 《网络攻防实践》第3周作业

1.实验内容 实验一:网络嗅探:网络嗅探利用计算机网络接口截获其他计算机数据报文,以监听数据流中包含的有效信息。由于捕获到的数据报文是经过封包处理的二进制数据,故还要结合网络协议分析技术。 使用tcpdump开源软件对在本机上访问www.tianya.cn网站过程进行嗅探,回答问…

github 2FA 双因素验证

- 参考连接:https://www.cnblogs.com/johnnyzen/p/17880870.html 我采用浏览器插件 在谷歌商店搜索: Authenticator: 2FA Clien 2、选择添加到扩展程序3,点击这个插件,记得使用免费的 切换到github的双重验证二维码界面 点击抓取二维码 然后就会出来验证码,输入即可-

GESP-Lv8总结(202406)

GESP C++ 八级 2024 年 06 月 题目链接 错题 ( T4 ) 有V个顶点、E条边的图的深度优先搜索遍历时间复杂度为 \(\color{red}{错误的:O(V})\) \(\color{green}正确的:O(V+E)\) 求时间复杂度,我们就需要先搞清楚源代码是什么?以下为 DFS 模板 void dfs(int now, int fa) {for(int…

城市林业的无声革命:人工智能与古老生态学如何重新设计城市

城市林业的无声革命:人工智能与古老生态学如何重新设计城市 在摩天大楼的阴影下,一场静悄悄的变革正在发生——它融合了硅芯片与古老根系,算法与原住民智慧。 作者:保罗桑杜作者利用 PicLumen 创建的图像城市森林不再只是城市规划中的装饰性附带元素。它们已成为活生生的实…

Andriod连接

1.创建项目:2.配置: AndroidManifest.xml添加语句点击查看代码<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />android:usesCleartextTraffic…

虚拟试衣间

虚拟试衣间 一、团队介绍 1.1 团队概况 1.1.1 博客展示链接 团队名,组长博客链接https://www.cnblogs.com/c-eng/p/18763232 1.1.2 团队项目描述 虚拟试衣间 1.1.3 队员风采 姓名:曾成鑫 风格:Excellent Nimble Talented Perfect 擅长的技术:Python 编程的兴趣:c++ 希望的…

AI Agent替代化成风,企业HR SaaS如何选?| 盘点2025国内HR SaaS厂商Top10

自2025年以来,前有DeepSeek搅动国内外AI圈,后又国内外各大厂商纷纷加速AI技术及产品应用落地,紧随而来,在AI Agent成为又一关键热词,Manus携“全球首款通用Agent产品”再次掀起一番躁动。 如此喧嚣热闹的背景之下,向广大人力资源从业者传递一个强烈信号:AI技术的发展正在…