码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1528--sam-Toy Cars(堆&贪心)

时间:2017-10-26 20:00:19      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:return   def   push   --   pass   scanf   tar   ==   bsp   

    。。。。

题目链接:

    http://www.lydsy.com/JudgeOnline/problem.php?id=1528 

Solution

    用数组记录一下每次玩具下次出现的时间。。。然后每一次贪心把下次出现时间最迟的取出即可。

代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<queue>
#include<vector>
#define inf 1000000
using namespace std;
int n,k,p;
int toy[600000],tim[110000],nxt[600000];
bool c[110000];
priority_queue< pair<int,int> ,vector< pair<int,int> > >q;
int main(){
    int ans=0;
    scanf("%d%d%d",&n,&k,&p);
    for(int i=1;i<=p;i++){
        scanf("%d",&toy[i]);
        nxt[tim[toy[i]]]=i;
        tim[toy[i]]=i;
        nxt[i]=inf;
    }
    int js=0;
    for(int i=1;i<=p;i++){
        if(c[toy[i]]==1){
            q.push(make_pair(nxt[i],toy[i]));
            continue;
        }
        if(js==k){
            while(c[q.top().second]==0) q.pop(); 
            c[q.top().second]=0;
            q.pop();
            js--;
        }
        js++;
        ans++;
        c[toy[i]]=1;
        q.push(make_pair(nxt[i],toy[i]));
    }
    printf("%d\n",ans);
    return 0;
}

  

  

This passage is made by Iscream-2001.

 

BZOJ 1528--sam-Toy Cars(堆&贪心)

标签:return   def   push   --   pass   scanf   tar   ==   bsp   

原文地址:http://www.cnblogs.com/Yuigahama/p/7738453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!