标签:题目 int 洗牌 cin pos 1762 AcWing ID 105
文章目录
题目
思考
题目可以这么描述:
有
n
n
n个数(即题目中奶牛的
I
D
ID
ID),这些数字会变换位置,现在记录了这些位置的变换方式,即
a
1
,
a
2
,
…
,
a
N
a1,a2,…,aN
a1,a2,…,aN,处于第i个位置的数会移动到
a
[
i
]
a[i]
a[i]的位置(
a
[
i
]
a[i]
a[i]各不相同),这样会进行三次,现给出变换后的序列以及a,求原序列。
思路就是模拟。
代码
#include<bits/stdc++.h>
#pragma GCC optimize(3,"Ofast","inline") //开个O3不迷路
//#define int long long
using namespace std;
int n,j,a[105],pos[105],c[105];
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>n;
for (int i=1;i<=n;i++){
cin>>j;
a[j]=i; //a[j]代表j移动到了i的位置上
}
for (int i=1;i<=n;i++) cin>>pos[i];//读入ID
for (int i=1;i<=n;i++) c[a[a[a[i]]]]=pos[i];
/*逆推,由于洗三次牌,所以要套三个a[i]*/
for (int i=1;i<=n;i++) cout<<c[i]<<"\n";//输出
return 0;
}
算法
模拟
标签:题目,int,洗牌,cin,pos,1762,AcWing,ID,105 来源: https://blog.csdn.net/yer_cas/article/details/122792311
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。