7713: 离散化去重 map

描述

 

“离散化”是指把一个无穷大的集合映射到一个有限的集合中。

如有n个整数,其中可能存在相同的数,现在需要你将其去重后得到的m个数用1~m来表示,同时保持原始的大小顺序不变,即在不改变数据相对大小的条件下,对数据进行相应的缩小。

如:

原数据:1, 999, 100000, 15

处理后:1, 3, 4, 2

同时给出若干查询,查询某个整数x被表示为1~m中的什么数?

 

 

输入

 

第一行为正整数n和q(1<=n<=100000,1<=q<=100000),表示原始数据个数和查询次数;

第二行为空格隔开的n个整数。

第三行为q个空格隔开的整数,每个整数为待查询的值。

 

 

输出

 

对于每次查询,输出被映射后的值,每行一个。

如果查询的值不存在,输出None

 

 

样例输入

 

10 3
1 2 2 3 5 5 8 9 9 10
2 9 11

样例输出

 

2
6
None

使用map有种用现代科技打古代人的感觉。。

复制代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10,inf = 0x3f3f3f3f;

int main()
{
    int n,m,i;
    cin >> n >> m;
    map<int,int> s,mp;
    map<int,int>::iterator it;
    for(int i = 1; i <= n; i++)
    {
        int x; scanf("%d",&x);
        s[x] = 1;
    }
    for(it = s.begin(),i = 1;it != s.end(); it++,i++)
    {
        mp[it->first] = i;
    }
    while(m--)
    {
        int x; scanf("%d",&x);
        if(mp[x]) printf("%d\n",mp[x]);
        else puts("None");
            
    }
    return 0;
}
复制代码

 

posted @   CRt0729  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-10-15 周六1900C++班级2022-10-15 do-while/调试/班级测试
2022-10-15 江南信息学第六周练习20221014
2022-10-15 周六900C++2022-10-15 深搜
点击右上角即可分享
微信分享提示