【1129】recommendation (25分)【set 运算符重载】

简介: 【1129】recommendation (25分)【set 运算符重载】【1129】recommendation (25分)【set 运算符重载】
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
#include<set>
using namespace std;  
//符号重载的node结构体作为set的元素自动排序,每次推荐set中的前k项
//book[num]标记num出现的次数
//注意先不处理输入的数字,根据之前的数据输出前K再存刚才新数据
int book[50001];
struct node{
  int value,cnt;
  bool operator<(const node &a)const{
    return (cnt!=a.cnt)?cnt>a.cnt:value<a.value;
    //第一优先级:频率降次  第二优先级:编号
  }
};
int main(){   
  int n,k,num;
  scanf("%d%d",&n,&k);//查询n次,每次推荐k个
  set<node>s;
  for(int i=0;i<n;i++){
    scanf("%d",&num);
    if(i!=0){
      printf("%d:",num);
      int tempCnt=0;
      //tempCnt累计小于k
      for(auto it=s.begin();tempCnt<k&&it!=s.end();it++){
        printf(" %d",it->value);
        tempCnt++;
      }
      printf("\n");
    }
    struct node a={num,book[num]};
    auto it=s.find(a);//返回a在set中对应的指针
    if(it!=s.end())  s.erase(it);
    //如果a结构体存在就先删除
    book[num]++;
    struct node b={num,book[num]};
    //重新插入新的num结构体
    s.insert(b);
  }
  system("pause");
    return 0;   
}
相关文章
|
人工智能 测试技术
PAT (Basic Level) Practice (中文) B1008 数组元素循环右移问题 (20 分)
PAT (Basic Level) Practice (中文) B1008 数组元素循环右移问题 (20 分)
101 0
PAT (Basic Level) Practice (中文) B1008 数组元素循环右移问题 (20 分)
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
PAT (Basic Level) Practice (中文) 1010 一元多项式求导 (25 分)
99 0
|
存储 测试技术
PAT (Basic Level) Practice (中文) 1004 成绩排名 (20 分)
PAT (Basic Level) Practice (中文) 1004 成绩排名 (20 分)
89 0
|
C语言
PAT (Basic Level) Practice (中文) B1026 程序运行时间 (15 分)
PAT (Basic Level) Practice (中文) B1026 程序运行时间 (15 分)
122 0
PAT (Basic Level) Practice (中文)- 1034 有理数四则运算(20 分)
PAT (Basic Level) Practice (中文)- 1034 有理数四则运算(20 分)
110 0
PAT (Basic Level) Practice (中文)- 1051 复数乘法(15 分)
PAT (Basic Level) Practice (中文)- 1051 复数乘法(15 分)
105 0
【1121】Damn Single (25分)【set】
【1121】Damn Single (25分)【set】 【1121】Damn Single (25分)【set】
98 0
【1085】Perfect Sequence (25 分)
【1085】Perfect Sequence (25 分) 【1085】Perfect Sequence (25 分)
89 0
【1063】Set Similarity (25 分)
【1063】Set Similarity (25 分) 【1063】Set Similarity (25 分)
95 0
【1108】Finding Average (20分)【字符串处理】
【1108】Finding Average (20分)【字符串处理】 【1108】Finding Average (20分)【字符串处理】
79 0