BZOJ 1528--sam-Toy Cars(堆&贪心)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1528--sam-Toy Cars(堆&贪心)相关的知识,希望对你有一定的参考价值。
。。。。
题目链接:
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(堆&贪心)的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ1623 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心
bzoj 1623: [Usaco2008 Open]Cow Cars 奶牛飞车排序+贪心
bzoj1528[POI2005]sam-Toy Cars*&&bzoj1826[JSOI2010]缓存交换
BZOJ 1623 [Usaco2008 Open]Cow Cars 奶牛飞车:贪心