I will no longer |

yabnto

园龄:2年8个月粉丝:14关注:17

[ABC268C] Chinese Restaurant

[ABC268C] Chinese Restaurant

声明:以下的所有操作都会再做一次 %n+n)%n,比如 i1 会变成 ((i1)%n+n)%n

题意

n 个人和 n 个盘子,每个人如果能拿到 i1ii+1 号盘子那么他会很开心,现在每个人的站位是 pi,他们的站位位置可以同时 +1,问最多可以有多少人觉得很开心。

思路

由于是一起动,所以可以用桶记录每个人走了多少步又到了那里,但是这样是 O(n2) 的存不下也会超时。我们知道只有他在固定的盘子前才会觉得开心,所以有些桶是没用的,所以只要记录每个人到他想要去的盘子要多远就可以了,时间复杂度和空间复杂度为 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;
}

本文作者:yabnto

本文链接:https://www.cnblogs.com/ybtarr/p/17413443.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   yabnto  阅读(79)  评论(0编辑  收藏  举报
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 光辉岁月 Audio artist
  3. 3 名前を呼ぶよ Audio artist
  4. 4 战歌 Audio artist
  5. 5 時を越えた想い Audio artist
  6. 6 所念皆星河 Audio artist
  7. 7 See you again Audio artist
所念皆星河 - Audio artist
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起