i-9究极优化
为啥是究极优化啊,因为我选错语言了时间慢了一倍多 但我不知道就一直改一直优化(QAQ),其实这个题就是维护一个大小为50的数组就行了。
因为数据量最大就50,然后我们现在输入的时候记录下出现的数字的最小位置,然后找到最大的数为max然后维护大小位max的数组就好了,这个数组就是每个数字出现的最小下标,然后每次询问的时候把比这个数字小的下标加一,询问数字改为一就好了。
#include<iostream> using namespace std; int a,vis[55]; int main(){ ios::sync_with_stdio(false); int n,q,op,max=0; cin>>n>>q; for(int i=1;i<=n;i++){ cin>>a; if(!vis[a])vis[a]=i; if(a>max)max=a; } while(q--){ cin>>op; cout<<vis[op]<<" "; for(int i=1;i<=max;i++){ if(vis[i]&&i!=op&&vis[i]<vis[op])vis[i]++; } vis[op]=1; } return 0; }