专栏文章
题解:P14171 【MX-X23-T1】丢手绢
P14171题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minoglhe
- 此快照首次捕获于
- 2025/12/02 05:44 3 个月前
- 此快照最后确认于
- 2025/12/02 05:44 3 个月前
题目大意:
对于第 个小朋友,以下规则记录下了数字 :
- 若 ,将手娟放在从自己开始顺时针数 个位置的小朋友身后。
- 若 ,将手娟放在从自己开始逆时针数 个位置的小朋友身后。
- 若 ,放在自己后面的啦。
按人气值从小到大排序,输出人气值最大的小朋友
人气值
规定人气值为身后被放手绢的次数。
思路:
这还有思路?直接模拟即可。
- 若 ,手绢放在第 小朋友身后。当然,若 ,说明小朋友已经转了一圈了,则手绢放在第 小朋友身后。
- 若 ,手绢放在第 小朋友身后。当然,若 ,说明小朋友已经转了一圈了,则手绢放在第 小朋友身后。
- 若 ,则放在自己后面的啦。
最后,用一个数组记下来第 个小朋友的人气值,将按人气值从小到大排序即可。
代码:
CPP#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,x,a[N],maxn;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
int t;
if(x>0){
t=i+x;
if(t>n) t-=n;
}
else if(x<0){
t=i+x;
if(t<1) t+=n;
}
else{
t=i;
}
a[t]++;
}
for(int i=1;i<=n;i++) maxn=max(maxn,a[i]);
for(int i=1;i<=n;i++){
if(a[i]==maxn) cout<<i<<" ";
}
return 0;
}
后记:
时间复杂度:。
空间复杂度:。
题解有问题可以私信哈!无耻地要个赞。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...