ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NC20185 [JSOI2010]缓存交换

2022-08-28 09:30:08  阅读:149  来源: 互联网

标签:JSOI2010 缓存 题目 int NC20185 100005 mp nex


题目

  • 原题地址:[JSOI2010]缓存交换
  • 题目编号:NC20185
  • 题目类型:堆、贪心
  • 时间限制:C/C++ 1秒,其他语言2秒
  • 空间限制:C/C++ 262144K,其他语言524288K

1.题目大意

  • Cache容量以及主存单元访问次序一致,求最少的非命中次数

2.题目分析

  • 每次删除缓存区中元素中下一次出现最晚的

3.题目代码

#include <bits/stdc++.h>

using namespace std;

int a[100005];
int f[100005];
int nex[100005];

int main() {
    int n, m;
    cin >> n >> m;
    for(int i=1;i<=n;i++) cin >> a[i];
    map<int, int> mp;
    priority_queue<int> q;
    for(int i=n;i>0;i--) {
        if(mp.count(a[i])) nex[i] = mp[a[i]];
        else nex[i] = 100001;
        mp[a[i]] = i;
    }
    int ans = 0;
    for(int i=1;i<=n;i++) {
        if(!f[i]){
            ans++;
            if(ans>m) f[q.top()] = 0, q.pop();
        }
        f[nex[i]] = 1, q.push(nex[i]);
    }        
    cout << ans << endl;   
}

标签:JSOI2010,缓存,题目,int,NC20185,100005,mp,nex
来源: https://www.cnblogs.com/zhangyi101/p/16632261.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有