专栏文章

题解:P14171 【MX-X23-T1】丢手绢

P14171题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minohqbh
此快照首次捕获于
2025/12/02 05:45
3 个月前
此快照最后确认于
2025/12/02 05:45
3 个月前
查看原文

解题思路

模拟。
把每位小朋友放手绢的位置统计一下,若有小朋友放在这个地方,则这个地方的计数器 sisi+1s_i\gets s_i+1
最后,取 ss 的最大值,即 maxnmaxi=1nsimaxn\gets\max\limits^n_{i=1}s_i。再遍历 ss,如果 si=maxns_i=maxn,则当前小朋友的人气值最高,输出这个 ii

Code

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1000010];
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,maxn=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int x;
		cin>>x;
		maxn=max(maxn,(++a[(i+x-1+n+n)%n+1]));
		// 注:i+x 为要放的位置,+n+n 为防止负数,(...-1)%n+1 为防止超过 n。
	}
	for(int i=1;i<=n;i++)
		if(a[i]==maxn)cout<<i<<' ';
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...