日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字节--用户喜好

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字节--用户喜好 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字節–用戶喜好

文章目錄

  • 字節--用戶喜好
    • 一、題目描述
    • 二、分析
    • 三、代碼

一、題目描述

為了不斷優化推薦效果,今日頭條每天要存儲和處理海量數據。假設有這樣一種場景:我們對用戶按照它們的注冊時間先后來標號,對于一類文章,每個用戶都有不同的喜好值,我們會想知道某一段時間內注冊的用戶(標號相連的一批用戶)中,有多少用戶對這類文章喜好值為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: 1 0 2例子說明1: 樣例解釋:5個用戶,喜好值為分別為12335, 第一組詢問對于標號[1,2]的用戶喜好值為1的用戶的個數是1 第二組詢問對于標號[2,4]的用戶喜好值為5的用戶的個數是0 第三組詢問對于標號[3,5]的用戶喜好值為3的用戶的個數是2

二、分析

哎,字節爸爸的題永遠不要想的太簡單,題中已經說到—海量數據,暴力求解只能超時,所以需要另辟捷徑

  • 這道題我們可以把用戶的喜好值和用戶的id封裝在一起,Node
typedef struct __tagNode {int val;int index;__tagNode(int x, int y){val = x;index = y;} }Node;
  • Node中一個是喜好值val,一個是index當前索引
  • 則輸入數組設置為:vector<node>vec,然后按照val對vec進行排序,這樣就會把同一個val的相鄰。
class less_to_greater {public:bool operator()(Node &x, Node &y){return x.val < y.val;} };
  • 然后用一個map記錄每個不同的val的初始索引,當查詢一個val的時候,只需要根據map中val的初始索引,在vec中向后查找,統計index在給定的left值和right范圍內的個數即可,這么做為了避免每次查詢一個val,就會遍歷很多數

三、代碼

#include<iostream> #include<vector> #include<unordered_map> #include<algorithm>using namespace std; //封裝Node typedef struct __tagNode {int val;//用戶喜好值int index;//用戶下標__tagNode(int x, int y){val = x;index = y;} }Node;//自定義比較方式:以用戶的喜好值排序 class less_to_greater {public:bool operator()(Node &x, Node &y){return x.val < y.val;} };int main() {int n;cin >> n;vector<Node>vec(n, Node(0, 0));//構造數組for(int i = 0; i < n; ++i){cin >> vec[i].val;vec[i].index = i;}// 排序sort(vec.begin(), vec.end(), less_to_greater());// 記錄每個喜好對應索引的位置//如果存在多個相同的喜好值,以第一個為準unordered_map<int, int>ma;for(int i = 0; i < n; ++i){if(ma.count(vec[i].val) < 1)ma[vec[i].val] = i;}// 開始查詢int q;cin >> q;while(q){int l, r, k;cin >> l >> r >> k;//排除不合法情況和沒有k喜好值的情況if(l > r || ma.count(k) < 1){cout << 0 << endl;--q;continue;}//--的原因是房間id是從1開始的--l;--r;//獲取喜好值為k的索引位置int i = ma[k];//保存結果int res = 0;//因為可能不只i號用戶的喜好值為k,上面保存的時候只以第一個為準//如果i位置在l和r之間更新結果while(i < n && vec[i].val == k){if(vec[i].index >= l && vec[i].index <= r)++res;++i;}cout << res << endl;--q;}return 0; }

總結

以上是生活随笔為你收集整理的字节--用户喜好的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成年午夜视频 | 成人激情五月天 | 午夜亚洲aⅴ无码高潮片苍井空 | 九色.com | 精品三区 | 白丝少妇 | 少女国产免费观看 | 国产成人毛片 | 国产真人无码作爱视频免费 | 精品二区视频 | 五月天婷婷久久 | 中文字幕亚洲一区二区三区五十路 | 国产jk精品白丝av在线观看 | 日本乱码一区二区 | 国产精品一区二区6 | 天天5g天天爽免费观看 | 欧美成人黑人xx视频免费观看 | 校霸被c到爽夹震蛋上课高潮 | 99热这里只有精品18 | 97久久国产亚洲精品超碰热 | 老司机午夜免费视频 | 国产第3页 | 九九在线精品视频 | 国产一区麻豆 | 一级黄色大片免费看 | 曰本黄色片 | 国产免费观看一区 | 久久国产免费视频 | 久久东京 | 99视频国产精品 | 爱乃なみ加勒比在线播放 | 你懂的91 | 美女bb视频 | 黄色网页观看 | 免费av中文字幕 | 欧美激情图 | 精品人妻一区二区乱码 | 欧美日韩在线播放三区四区 | 白浆四溢 | 一区二区三区免费 | 手机看片福利久久 | 影音先锋制服丝袜 | 18视频在线观看娇喘 | 综合视频在线 | 人妻丰满熟妇av无码区不卡 | 天天干女人 | 青青草成人网 | 人人色网 | 亚洲第十页 | 欧美一区二区在线观看视频 | 日本天堂网 | 中文字幕日韩在线视频 | 麻豆网站免费看 | 综合久久一区 | 中文字幕av免费观看 | 亚洲av无码专区在线播放中文 | 浪漫樱花动漫在线观看免费 | 久久久成人精品一区二区三区 | 丝袜脚交免费网站xx | 69xxx少妇按摩视频 | 欧美激情综合网 | 午夜影院久久久 | 国内精品亚洲 | 永久免费av无码网站性色av | 哪里可以看免费毛片 | 裸体黄色片 | 8090理论片午夜理伦片 | 国产无限资源 | 欧美成人精精品一区二区频 | 国产一级视频 | 久夜精品| 粉嫩av国产一区二区三区 | 91成人精品国产刺激国语对白 | 成人午夜视频在线免费观看 | 日本黄色免费网址 | 夜夜操操 | 999热视频 | 日韩黄色av网站 | 老司机午夜剧场 | 日韩理论在线观看 | 午夜精品久久久久久久久久久 | 国产精品亚洲一区二区无码 | 久久国产一级 | 成人伊人网| 成人美女免费网站视频 | 久国久产久精永久网页 | 国产视频手机在线播放 | 97超在线 | 精品一区二区电影 | jizz免费 | 成人入口| 久久九九99 | 国产又粗又大又黄 | 久久黄色小视频 | 亚洲欧美91 | 亚洲精品国产精品乱码桃花 | 人人射影院 | 欧美精品第1页 | av在线一区二区 |