题目
Description
![](https://i-blog.csdnimg.cn/blog_migrate/4ade53415710537735df86871873383b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/079578e61fe0199f8e1050c5005bb3b9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/db6727a56344bf5cb990619c5a4b64da.png)
![](https://i-blog.csdnimg.cn/blog_migrate/936a89aa670fc95151451ed42b3fdc9d.png)
Input
![](https://i-blog.csdnimg.cn/blog_migrate/b8ab5b1b0750142f3155f71cf9c8a967.png)
Output
![](https://i-blog.csdnimg.cn/blog_migrate/88697c840ca32551f3aa442d63ef8375.png)
Sample Input
32 2 2 14 15 18 23 7 8 28 10 30 31 13 14 15 16 17 18 7 8 21 10 23 13 16 17 27 28 21 30 31 27 8 14 5 2 12 16 7 15 6 9 3 10 13 4 1 11
Sample Output
15 16 31 13 17 19 28 10 7 4 1 21 24 32 14 30 12 18 27 9 6 3 20 23 29 11 26 8 5 2 22 25
Data Constraint
![](https://i-blog.csdnimg.cn/blog_migrate/929a016543df91e0619d114a0dcc95e7.png)
Hint
【数据规模】
对于20%的数据,有2<=n<=2^6。
对于100%的数据,有2<=n<=2^14。
对于20%的数据,有2<=n<=2^6。
对于100%的数据,有2<=n<=2^14。
分析
- 首先,题目很长,服
- 题意是:给出数组FI0,SA1,求数组SA0,其中数组SA1中的值是SA0值中的偶数的一半,
- FI0中的值是SA0中的偶数值的下标,奇数值加1的下标
代码
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int f[60000],s1[60000],s2[60000]; 6 int main() 7 { 8 int n; 9 cin>>n; 10 for(int i =1;i<=n;++i) 11 scanf("%d",&f[i]); 12 for(int i =1;i<=n/2;++i) 13 scanf("%d",&s2[i]); 14 memset(s1,0,sizeof(s1)); 15 int cnt=0; 16 for(int i =1;i<=n;++i) 17 if(f[i]==i) 18 s1[i]=s2[++cnt]*2; 19 for(int i=1;i<=n;++i) 20 if(f[i]!=i) 21 s1[i]=s1[f[i]]-1; 22 for(int i=1;i<n;++i) 23 cout<<s1[i]<<' '; 24 cout<<s1[n]<<endl; 25 }