[ABC268C] Chinese Restaurant
2023/5/19 1:22:05
本文主要是介绍[ABC268C] Chinese Restaurant,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[ABC268C] Chinese Restaurant
声明:以下的所有操作都会再做一次 \(\% n+n) \% n\),比如 \(i - 1\) 会变成 \(((i-1)\%n+n)\%n\)
题意
有 \(n\) 个人和 \(n\) 个盘子,每个人如果能拿到 \(i - 1\) 或 \(i\) 或 \(i + 1\) 号盘子那么他会很开心,现在每个人的站位是 \(p_i\),他们的站位位置可以同时 $ + 1$,问最多可以有多少人觉得很开心。
思路
由于是一起动,所以可以用桶记录每个人走了多少步又到了那里,但是这样是 \(O(n^2)\) 的存不下也会超时。我们知道只有他在固定的盘子前才会觉得开心,所以有些桶是没用的,所以只要记录每个人到他想要去的盘子要多远就可以了,时间复杂度和空间复杂度为 \(O(n)\),在记录要走多远的时候,要注意细节。
代码
#include <iostream> using namespace std; const int MaxN = 2e5 + 10; int cnt[MaxN], p[MaxN], n, ans; int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> p[i]; cnt[n - ((p[i] - (i - 1 + n) % n) + n) % n]++, cnt[n - ((p[i] + n - i) + n) % n]++, cnt[n - ((p[i] + n - (i + 1) % n) + n) % n]++; } for (int i = 0; i < n; i++) { ans = max(ans, cnt[i]); } cout << ans << endl; return 0; }
这篇关于[ABC268C] Chinese Restaurant的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享