POI每日一题 #2 SAM-Toy Cars

Posted hjmmm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI每日一题 #2 SAM-Toy Cars相关的知识,希望对你有一定的参考价值。

题目链接

取下哪一个玩具由数据而定

这道题关键点就在于把哪一个玩具放回柜子上

关注一个玩具放回后对之后玩具的影响

显然要放回下一次用的时间(next)最靠后的那一个

 

算法选择:对于贪心取元素,选择堆

又懒得手写。。。所以用优先队列啦

 这里复习一下优先队列吧 

 

还有就是一些算法细节

一个要用的玩具如果本来就在地上的话

需要更新它的next

但是在堆里查找修改很是麻烦(其实是蒟蒻不会

解决方法:

把当前点插入堆

原来的那个点的next肯定是不会再被找到啦

(因为现在找到i 更新完i后 next值大于i的点就有k个

(每次找next最大的 所以肯定不会找到原来的点

但这样就占了个限制内的位置啊

莫方 因为原来的点一定不会被访问 也不会被弹出

所以把它当作空占位的“僵尸点” 把限制k++就好啦

 

代码:

技术分享图片
 1     for(int i = 1; i <= p; i++){
 2         if(inq[a[i]]){
 3             q.push(i);
 4             m++; continue;
 5         }
 6         if(q.size() == m){
 7             int tp = q.top(); q.pop();
 8             inq[a[tp]] = 0; 
 9         }
10         ans++;
11         q.push(i);
12         inq[a[i]] = 1;
13     }
核心部分

 

以上是关于POI每日一题 #2 SAM-Toy Cars的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 1528 1528: [POI2005]sam-Toy Cars (贪心+堆)

bzoj1528[POI2005]sam-Toy Cars*&&bzoj1826[JSOI2010]缓存交换

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

sam-Toy Cars

SAM-Toy Cars题解

笔试强训每日一题