1 条题解

  • 0
    @ 2025-8-24 22:32:11

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Aybbl_xc
    我是男的

    搬运于2025-08-24 22:32:11,当前版本为作者最后更新于2023-08-21 19:36:15,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    前言

    本蒟蒻的第一篇题解,跟一位大佬思路一样,一道很水的题

    题目大意

    题目有点难理解,多读几遍就能通

    大概就是找有多少个不同数字,接着输出个数,和最后一次出现的顺序输出

    分析

    看到这道题就能想到桶排,再看眼范围只有 106\displaystyle10^6 所以先记录个数,再遍历一遍,注意最后要倒序输出

    接下来直接看代码

    #include<bits/stdc++.h>
    using namespace std;
    int m,n,ans,temp;
    int gs[1000001];//用来记录个数 
    int a[1000001],sum[1000001];//答案数组 
    bool b[1000001];//用来统计 
    int main(){
    	cin>>m>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		gs[a[i]]++;
    	}
    	for(int i=1;i<=1000000;i++){//从题中得知最大为1000000 
    		if(gs[i]) ans++;
    	}
    	for(int i=n;i>=1;i--){//题目说倒着第一个出现
    	    if(b[a[i]]!=true){
    	    	sum[++temp]=a[i];
    	    	b[a[i]]=true;//标记已访问 
    		}else continue; 
    	}
    	cout<<ans<<endl;//输出个数
    	for(int i=ans;i>=1;i--) cout<<sum[i]<<" "; 
    	return 0;//好习惯 
    }
    

    完结散花!!!

    希望管理员能过

    • 1

    信息

    ID
    7022
    时间
    6000ms
    内存
    10MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者