P2249题解

P2249题解

题目传送门

审题

,如果直接输入再找一次肯定会超时,所以要想一种更好的方法。

我们可以对每一个出现的数字存它第一次出现的位置,十分方便,效率虽然有点低,但足以AC本题

上代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<map>
using namespace std;
map<int,int>a;
int main()
{
int m,n,k,l=-1;
cin>>n>>m;
for(int i=1;i<=n;i++)//输入并记录第一次出现的位置
{
cin>>k;
if(l!=k){
a[k]=i;
l=k;
}
}
for(int i=0;i<m;i++)//对于每一个询问,输出它的位置
{
cin>>k;
if(a.count(k))cout<<a[k]<<' ';//如果存在就输出
else cout<<-1<<' ';//否则输出-1
}
return 0;
}

P2249题解
https://blog.shaoyanxing.top/2024/03/24/P2249题解/
作者
邵彦行
发布于
2024年3月24日
许可协议