PAT 甲级 刷题日记|A 1129 Recommendation System (25 分)

access 访问 通道 存取 进入 机会

思路

这道题的关键是选取合适的数据结构,方便的排序+随机的存取,使用集合最为方便。

代码

#include <bits/stdc++.h>
using namespace std;

int n, k;
const int maxn = 50003;
int book[maxn];
struct node{
    int data;
    int fre;
    node(int d, int f): data(d), fre(f) {
    }
    bool operator < (const node &a) const {
        if (fre != a.fre) return fre > a.fre;
        return data < a.data;
    }
};


int main() {
    cin>>n>>k;
    set<node> Node;
    for (int i = 0; i < n; i++) {
        int num;
        cin>>num;
        if (i != 0) {
            cout<<num<<":";
            int temp = 0;
            for (auto th = Node.begin(); th != Node.end() && temp < k; th++) {
                cout<<" "<<th->data;
                temp++;
            }
            cout<<endl;
        }
        auto it = Node.find(node(num, book[num]));
        if (it != Node.end()) Node.erase(it);
        book[num]++;
        Node.insert(node(num, book[num]));
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容