PAT A1129 Recommendation System (25 分)——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.
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:
query: rec[1] rec[2] ... rec[K]
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.
Sample Input:
12 3
3 5 7 5 5 3 2 1 8 3 8 12
Sample Output:
5: 3
7: 3 5
5: 3 5 7
5: 5 3 7
3: 5 3 7
2: 5 3 7
1: 5 3 2
8: 5 3 1
3: 5 3 1
8: 3 5 1
12: 3 5 8
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <set>
using namespace std;
const int maxn=;
struct node{
int num;
int cnt;
node(int num,int cnt):num(num),cnt(cnt){};
bool operator < (const node& a) const{
return cnt!=a.cnt?cnt>a.cnt:num<a.num;
}
};
set<node> s;
int times[];
int main(){
int n,k;
scanf("%d %d",&n,&k);
for(int i=;i<n;i++){
int tmp;
scanf("%d",&tmp);
if(i!=){
printf("%d:",tmp);
int j=;
for(auto it=s.begin();it!=s.end()&&j<k;it++,j++){
printf(" %d",it->num);
}
printf("\n");
}
if(s.find(node(tmp,times[tmp]))!=s.end()){
s.erase(s.find(node(tmp,times[tmp])));
}
times[tmp]++;
s.insert(node(tmp,times[tmp]));
}
}
注意点:用数组,然后再复制排序,后面3个测试点都会超时,这里要用set。虽然一开始想到的也是要用set,但set只能对数字自动排序,咋办,看了大佬的,原来可以重载<符号,这样set可以自动对结构体排序了,还有就是结构体的构造函数的写法,这样可以直接构造一个node了。之前看的primec++全忘完了。。。
超时代码:虽然写的时候就感觉会超时,但想不到别的办法,只好硬着头皮写了,考试的时候这样也能拿个16分,就酱吧,花不到30分钟还行
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
const int maxn=;
struct node{
int num;
int cnt;
}nodes[maxn];
bool cmp(node n1,node n2){
return n1.cnt==n2.cnt?n1.num<n2.num:n1.cnt>n2.cnt;
}
node res[maxn];
int main(){
int n,k;
int count=;
scanf("%d %d",&n,&k);
for(int i=;i<n;i++){
int tmp;
scanf("%d",&tmp);
if(i!=){
printf("%d:",tmp);
memcpy(res,nodes,sizeof(nodes));
sort(res,res+maxn,cmp);
for(int j=;j<k;j++){
if(res[j].cnt!=){
printf(" %d",res[j].num);
}
}
printf("\n");
}
nodes[tmp].num=tmp;
nodes[tmp].cnt++;
}
}
PAT A1129 Recommendation System (25 分)——set,结构体重载小于号的更多相关文章
- PAT 甲级 1070 Mooncake (25 分)(结构体排序,贪心,简单)
1070 Mooncake (25 分) Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autum ...
- PAT甲级 1129. Recommendation System (25)
1129. Recommendation System (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- PAT 1129 Recommendation System[比较]
1129 Recommendation System(25 分) Recommendation system predicts the preference that a user would giv ...
- PTA PAT排名汇总(25 分)
PAT排名汇总(25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科 ...
- PAT甲级——A1129 Recommendation System【25】
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- PAT 甲级 1032 Sharing (25 分)(结构体模拟链表,结构体的赋值是深拷贝)
1032 Sharing (25 分) To store English words, one method is to use linked lists and store a word let ...
- PAT 甲级 1016 Phone Bills (25 分) (结构体排序,模拟题,巧妙算时间,坑点太多,debug了好久)
1016 Phone Bills (25 分) A long-distance telephone company charges its customers by the following r ...
- A1129. Recommendation System
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- PAT 1129 Recommendation System
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
随机推荐
- Linux常用基本命令:三剑客命令之-awk基础用法
awk是一个超级强大的文本格式化处理工具,他与grep, sed命令被成为linux 三剑客命令 三剑客命令的特点: grep:只要用来匹配和查找文本 sed: 编辑匹配到文本 awk: 格式化文本, ...
- Vue学习资料
1. {{ msg }}插值表达式. v-text:将数据插入到页面中,没有闪烁问题. v-cloak:通过style属性选择器的方式display:none:防止闪烁问题. v-html:将标签解析 ...
- PATH、CLASSPATH、CLASSPATH
PATH: 说明: 环境变量中的path,意在在向计算机发出指令时的一个指向路径,如 一般会在path里加上:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 其中:%JAVA_ ...
- CSS 3D transforms
https://www.creativebloq.com/css3/20-stunning-examples-css-3d-transforms-11112759 https://github.com ...
- postgresql-10.1-3-windows-x64 安装之后,起动pgAdmin 4问题(win10)
运行pgAdmin出现”pgAdmin 4 the application server could not be contant“ 窗口. 参考:https://stackoverflow.com ...
- phothoshop 快捷键
界面构成: 1 菜单栏 2 工具箱 3 工具属性栏 4 悬浮面板(辅助作用) CTRL + N 新建对话框(对画布进行设置) 回车确定 CTRL + O (字母) 打开对话框(选择图片) 画布的三种显 ...
- jenkins无法获取插件的解决办法
很多同学在初次配置Jenkins时,是需要安装一些插件的,但是在可选插件和已安装插件里,全都是空白的. 这是为什么呢? 是因为,Jenkins默认的更新站点服务器在国外,但我们身处天朝,所以这个站点已 ...
- SuperMap iObject .NET开发完成后私有部署,打包安装
转载自:http://blog.csdn.net/supermapsupport/article/details/53319800 作者:皇皇 SuperMap iObjict .NET组件开发结束后 ...
- 我的Java之旅 第五课 JAVA 语言语法 集合
JAVA集合只能存放引用类型的的数据,不能存放基本数据类型,int 可以用 Integer代替. 一.集合接口 1. Iterable<E> 实现这个接口允许对象成为 "fo ...
- Salesforce的数据安全防护措施
通过Salesforce,我们可以配置或开发出功能强大的网络应用.与此同时,无论作为管理员还是开发者,我们都要面对数据安全的问题. 常见的数据安全隐患有: SQL注入 跨站脚本攻击 跨站请求伪造 点击 ...