1129 Recommendation System

1129 Recommendation System (25 分)

Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user‘s preference by the number of times that an item has been accessed by this user.

Input Specification:

Each input file contains one test case. For each test case, the first line contains two positive integers: N (≤ 50,000), the total number of queries, and K (≤ 10), the maximum number of recommendations the system must show to the user. Then given in the second line are the indices of items that the user is accessing -- for the sake of simplicity, all the items are indexed from 1 to N. All the numbers in a line are separated by a space.

Output Specification:

For each case, process the queries one by one. Output the recommendations for each query in a line in the format:

where query is the item that the user is accessing, and rec[i] (i=1, ... K) is the i-th item that the system recommends to the user. The first K items that have been accessed most frequently are supposed to be recommended in non-increasing order of their frequencies. If there is a tie, the items will be ordered by their indices in increasing order.

Note: there is no output for the first item since it is impossible to give any recommendation at the time. It is guaranteed to have the output for at least one query.

知识点:STL的使用,排序

思路:每一次输入后,都要让所有元素有序。如果利用线性结构,那么他的时间复杂度是O(n),在数据量大的时候也是不行的。利用STL的set,插入的时间复杂度降为O(logN)

 1 #include <cstdio>
 2 #include <set>
 3 using namespace std;
 4 const int maxn = 500050;
 5
 6 int clickTime[maxn];
 7 struct nodetype{
 8     int v,cnt;
 9     nodetype(int a,int b) : v(a), cnt(b) {}
10     bool operator < (const nodetype &a) const    {
11         return (cnt!=a.cnt)?cnt>a.cnt:v<a.v;
12     }
13 };
14
15 int main(int argc, char *argv[]) {
16     fill(clickTime,clickTime+maxn,0);
17
18     int n,k,tmp;
19     scanf("%d %d",&n,&k);
20     set<nodetype> s;
21     for(int i=1;i<=n;i++){
22         scanf("%d",&tmp);
23         if(i!=1){
24             printf("%d:",tmp);
25             int cnt=0;
26             for(auto it=s.begin();cnt<k&&it!=s.end();it++){
27                 printf(" %d",it->v);
28                 cnt++;
29             }
30             printf("\n");
31         }
32
33         auto it = s.find(nodetype(tmp,clickTime[tmp]));
34         if(it!=s.end()){
35             s.erase(nodetype(tmp,clickTime[tmp]));
36         }
37         s.insert(nodetype(tmp,clickTime[tmp]+1));
38         clickTime[tmp]++;
39     }
40 }

原文地址:https://www.cnblogs.com/lokwongho/p/9908526.html

时间: 2024-10-08 08:00:26

1129 Recommendation System的相关文章

PAT 1129 Recommendation System[比较]

1129 Recommendation System(25 分) Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item ha

PAT 1129 Recommendation System

Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item has been accessed by this user. Inp

PAT 甲级 1129 Recommendation System

https://pintia.cn/problem-sets/994805342720868352/problems/994805348471259136 Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's pref

1129 Recommendation System PAT 甲级真题(输出格式,set使用)

Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item has been accessed by this user. Inp

PAT甲级——A1129 Recommendation System【25】

Recommendation system predicts the preference that a user would give to an item. Now you are asked to program a very simple recommendation system that rates the user's preference by the number of times that an item has been accessed by this user. Inp

[Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web 应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验.集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是我们在单个个体上无法得到的,它往往是某种趋势或者人群中共性的部分. Wikipedia 和 Google 是两个典型的利用集体智慧的 Web

zz [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

http://yidianzixun.com/n/09vv1FRK?s=1 完全摘抄自网页 1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在Web 应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验.集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是我们在单个个体上无法得到的,它往往是某种趋势或者人群

A题目

1 1001 A+B Format(20) 2 1002 A+B for Polynomials(25) 3 1003 Emergency(25) 4 1004 Counting Leaves(30) 5 1005 Spell It Right(20) 6 1006 Sign In and Sign Out(25) 7 1007 Maximum Subsequence Sum(25) 8 1008 Elevator(20) 9 1009 Product of Polynomials(25) 10

(转) Quick Guide to Build a Recommendation Engine in Python

本文转自:http://www.analyticsvidhya.com/blog/2016/06/quick-guide-build-recommendation-engine-python/ Introduction This could help you in building your first project! Be it a fresher or an experienced professional in data science, doing voluntary projects