题目:http://www.wikioi.com/problem/2069/

分析:

首先这个问题比较复杂,涉及到两个重要的考虑点,一个是当前拿来的颜色是否保留,一个是若保留后那么应该把当前盘子的哪个颜色去掉。

先从简单考虑,假设不考虑当前颜色是否保留,规定如果盘子里没有的颜色拿来后就必须放入盘子中,同时从盘子中去掉一个颜色,那么问题就是现在删除哪个颜色好:

最直接的想法就是删去在后面出现次数最少的颜色,因为后面出现次数越多我把保留在盘子里就需要换更少次。那么这么想正确吗?

举个栗子:盘子里的颜色是1 2 3 给出的序列是4 1 1 4 2 2 2 3 3 3 3

那么根据我们的贪心策略盘子的颜色依次是:

4 2 3(+1)

1 2 3(+1)

1 2 3

4 2 3(+1)

……(后面没有了)

总共是3次

而如果我们第一次删的不是1而是3,则只需2次

这是因为"1"“迫在眉睫”,仔细想想,即使一个颜色在后面出现的次数再多再多,但在后面第一次出现的位置离现在位置很远很远,为什么要一直让它占着位置呢?

于是我们的贪心策略就是每次删除的盘子中所有颜色中在后面最晚出现(指第一次出现最晚)的颜色!

再加上另一个问题,就是考虑当前拿来的颜色是否要跟盘子中的换,这很好解决,我们可以理解成盘子容纳的颜色数变成了m+1个,我们将这个颜色放进去,然后再m+1个颜色中取按照第一问的原则删除最晚出现(第一次出现最晚)的颜色

综上,我们的贪心策略是:

对于当前处理颜色:

①盘子里有:直接跳过

②盘子里没有:

  (1)若盘子里的所有颜色中最晚出现的颜色的位置比当前处理颜色紧接着的下一个位置要靠前,那么就不用把处理的颜色加入盘子中

  (2)…………………………………………………………………………………………………………………………要靠后,那么就去掉最晚出现的颜色并把新颜色加入盘子

对于上面这个过程,当然用堆维护,鉴于要快速知道一个颜色的下一个位置,所以要用链表预处理

[wikioi2069]油画(贪心)的更多相关文章

  1. Vijos P1023Victoria的舞会3【贪心+DFS求强联通分量】

    链接:Click Me! P1023Victoria的舞会3 Accepted 标签:Victoria的舞会[显示标签] 描写叙述 Victoria是一位颇有成就的艺术家,他因油画作品<我爱北京 ...

  2. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  3. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  6. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  7. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  8. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

  9. 【BZOJ1623】 [Usaco2008 Open]Cow Cars 奶牛飞车 贪心

    SB贪心,一开始还想着用二分,看了眼黄学长的blog,发现自己SB了... 最小道路=已选取的奶牛/道路总数. #include <iostream> #include <cstdi ...

随机推荐

  1. python lambda表达式简单用法

    习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1:     name = 'wupeiqi' else ...

  2. struts2 redirect 配置动态传递参数

    <action name="actionName" class="com.towerking.TestAction" method="execu ...

  3. Error during installing HAXM, VT-X not working 在安装HAXM错误,开始不工作

    最佳答案 (Best Answer) Some antivirus options prevent Haxm installation. ie: Avast : settings (parametre ...

  4. JavaScript的几种函数的结构形式

    匿名函数,普通函数,变量函数,基于对象的方法 介绍它们的优劣点(性能,执行条件,可维护性,适合大型还是小型) Javascript有着灵活多变的函数方法,具体选用何种形式,都会极大地影响应用程序的编写 ...

  5. PHP采集程序中的常用函数

  6. 最小瓶颈路 Uva 534 Frogger

    说明:关于Uva的题目,可以在vjudge上做的,不用到Uva(那个极其慢的)网站去做. 最小瓶颈路:找u到v的一条路径满足最大边权值尽量小 先求最小生成树,然后u到v的路径在树上是唯一的,答案就是这 ...

  7. opencv3.1 + opencv_contrib编译记事(win7下)

    折腾了好几天,终于把opencv3.1加上一个额外的包opencv_contrib编译好了.(总体来说编译opencv就是填坑!!!) 最后我编译成功的是mingw版本的.也就是结合了Qt4.7+cm ...

  8. mac os利用xampp实现apache下的cgi

    折腾了两天终于把问题解决了,mac os是10.10.3..够新了吧 系统原生的apache配置cgi老是配不好,突然发现xampp也有macos版的,准备下下来试试. 安装完成后,打开apache服 ...

  9. Android系列之网络(二)----HTTP请求头与响应头

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  10. 获取本机的IP地址(局域网)与主机名称

    编写内容保存为bat @echo off &setlocal enabledelayedexpansion Rem '/*========获取本机的IP地址(局域网)=========*/ e ...