CF180F Mathematical Analysis Rocks! 题解

· · 题解

题目要点:

  1. 一个人有一个好盆友,而那两人不一定互为好盆友;(我理解错了哈哈 论审题的重要性)

算法

其实有点像有向图(瞎猜的),但是我们只要求出指向的关系(比如 a\to b )就行。

咳咳,安利一下图论神器

分析:

像这张图

1\to3 2\to1 3\to4 4\to2

因为第三天的笔记本到第四天时肯定是由 ip[i] ,于是我们追踪笔记本的从 ab 的位置,就可以求出 ab 的好朋友。

AC Code:

#include<bits/stdc++.h>//万能头
using namespace std;
int n,a[100005],b[100005],t[100005];
//t[i]表示第i个学生的好朋友是t[i]
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n;i++)
        cin>>b[i];//输入数据ab组
    for(int i=1;i<=n;i++)
        t[a[i]]=b[i]; //第三天拿到i笔记本的学生(也就是a[i]),把笔记本给了b[i],记录在t数组中
    for(int i=1;i<=n;i++)
        cout<<t[i]<<" ";
    return 0; //好习惯
}