题目描述

为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1)。

输入描述:

输入: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度 第3行为一个正整数q代表查询的组数  第4行到第(3+q)行,每行包含3个整数l,r,k代表一组查询,即标号为l<=i<=r的用户中对这类文章喜好值为k的用户的个数。 数据范围n <= 300000,q<=300000 k是整型

输出描述:

输出:一共q行,每行一个整数代表喜好值为k的用户的个数

示例1

输入

5
1 2 3 3 5
3
1 2 1
2 4 5
3 5 3

输出

1
0
2

说明

样例解释:
有5个用户,喜好值为分别为1、2、3、3、5,
第一组询问对于标号[1,2]的用户喜好值为1的用户的个数是1
第二组询问对于标号[2,4]的用户喜好值为5的用户的个数是0
第三组询问对于标号[3,5]的用户喜好值为3的用户的个数是2

题解:

一开始用的vector型数组,结果k值太大,直接段错误。

正解:利用c++ STL库中 multimap,multimap提供了可以一种可以有重复键值的STL map类型。其插入方式和map相似。不会用的先自行百度吧。

这里需要解释下边代码中:ret=equal_range(k):函数的返回值是一个pair,分别存放相同键k的迭代器区间。

插入以用户喜好值为key,以用户标号为value。剩下的就是遍历相同键k的区间。

#include<bits/stdc++.h>
using namespace std;
#define mk make_pair
typedef long long ll;
multimap <int,int> mp;
int n;
int a,q;
int l,k,r,ans;
int main(void)
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a);mp.insert(mk(a,i));}scanf("%d",&q);for(int i=0;i<q;i++){scanf("%d%d%d",&l,&r,&k);auto ret=mp.equal_range(k);ans=0;for(auto it=ret.first;it!=ret.second;it++){if(it->second>=l&&it->second<=r)ans++;}printf("%d\n",ans);}return 0;
}

今日头条2018校招后端方向(用户喜好)c++相关推荐

  1. 今日头条2018校招后端方向(第二批)

    1.为了不断优化推荐效果,今日头条每天要存储和处理海量数据.假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号 ...

  2. 题解-今日头条2018校招后端方向(第二批)

    原题链接 链接:https://www.nowcoder.net/questionTerminal/429c2c5a984540d5ab7b6fa6f0aaa8b5 作为一个手串艺人,有金主向你订购了 ...

  3. 题解-今日头条2018校招后端方向(第四批)

    原题链接 链接:https://www.nowcoder.net/questionTerminal/fcd645af2750401588d9e92aea05d630 有一个仅包含'a'和'b'两种字符 ...

  4. 今日头条2018校招后端方向(第二批)编程题2,串珠问题。java代码。

    作为一个手串艺人,有金主向你订购了一条包含n个杂色串珠的手串--每个串珠要么无色,要么涂了若干种颜色.为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不包含无色),在任意连续的m个串 ...

  5. 今日头条2018校招测试开发方向(第一、二、三、四批)编程题汇总 - 题解

    对于今日头条这家公司来说,测试的题和后端开发的题几乎是一样的,但是由于第一批的后端开发的题没有在牛客网上放出来,因此,猜测后端开发第一批的题应该和后端开发第一批的题一样,同时也想做一个测试方向编程题的 ...

  6. 今日头条2018校招测试开发方向(第一批)详解

    ##问答题 #####1.给定一棵树的根节点, 在已知该树最大深度的情况下, 求节点数最多的那一层并返回具体的层数. ######如果最后答案有多层, 输出最浅的那一层,树的深度不会超过100000. ...

  7. 今日头条2018校招大数据/算法方向(第一批)详解

    问答题 1.给定一棵树的根节点, 在已知该树最大深度的情况下, 求节点数最多的那一层并返回具体的层数. 如果最后答案有多层, 输出最浅的那一层,树的深度不会超过100000.实现代码如下,请指出代码中 ...

  8. 今日头条2018校招编程题

    题目描述 有一个仅包含'a'和'b'两种字符的字符串s,长度为n,每次操作可以把一个字符做一次转换(把一个'a'设置为'b',或者把一个'b'置成'a'):但是操作的次数有上限m,问在有限的操作数范围 ...

  9. 今日头条2018校园招聘后端开发工程师(第二批)编程题 - 题解

    以前做过第三批的题目,今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解.这一场的题目偏技巧和算法,而第三批的题偏编码.这一场涉及的算法有二分查找.区间动态规划. 原题链接:点这儿. 第 ...

最新文章

  1. spring boot集成mybatis
  2. Python——Python连接MySQL数据库
  3. 爬虫python是干什么的_爬虫是什么?能自学嘛
  4. LeetCode93. 复原IP地址
  5. (转)DPDK 实现的不完全理解
  6. WPF界面设计辅助工具--Blend
  7. 3D建模电脑配置推荐(收藏)
  8. 点击“安全删除硬件并弹出媒体”不显示可删除移动设备
  9. 计算机无法登录到你的账户,win10电脑无法登陆到你的账户怎么办?win10电脑无法登陆到你的账户相关讲解...
  10. 淘宝/天猫API ,获取sku详细信息 OneBound数据
  11. 查询选修了95002选修的全部课程的学生学号。
  12. UNE BASE SIMPLE MAIS PARFAITE POUR SENTENCE EMBEDDINGS(一个简单但很难超越的Sentence Embedding基线方法)
  13. 后端再进阶一步,MySQL 优化学习第1天
  14. 搜狗开源内部项目管理平台Cynthia意欲何为
  15. python控件_python常用控件
  16. 英伟达Xavier调试记录_202209
  17. 视频测试文件下载地址
  18. 粉丝用开源游戏引擎重制超级马里奥 64
  19. xmos_helloworld
  20. 《代码规范》如何写出干净的代码(四)对象和类

热门文章

  1. 什么是1080p、2k、4k?视频基础参数解释
  2. 在Ubuntu 20.04 拆分pdf文档
  3. linux网络协议栈(四)链路层 (5)vlan处理
  4. 什么是响应式布局?原理是什么?
  5. doolittle分解法解线性方程
  6. 关于vs在.cpp提取头文件运行的时候一直报错“xx函数主体重定义”
  7. 01时态(1):疑问句
  8. Itest(爱测试),最懂测试人的开源测试管理软件隆重发布
  9. python函数库分类及实例_Python中Scikit-Learn库的分类方法总览
  10. windows常用命令及相关命令