第24期终于来了……
快到期末了,下一期啥时候能出还是个未知数……
嘛,好歹这一期出来了不是么?
今天这道题其实是个操作系统题,题本身不太难。
第24期 我的世界2
K上一次在MC里搭了个奇观(雕塑)之后,这次又想再搭一个奇观。这次他要搭一个像素画。他这个人其实没什么美术细胞,所以搭像素画的方式跟别人不太一样:首先写了个程序,用一些(可以再水出一期算法挑战的)技术手段导出了一张表格,告诉他每一格该搭什么方块。之后,把要搭的图像输入进去,拿到表格,对着表格搭像素画。
K按照表格搭像素画的时候,发现他的快捷栏不够大,只能容纳9个方块,因此下一个要搭的方块常常没有出现在快捷栏里面。这时只能去方块表里找,找到对应的方块之后再放在快捷栏里的某个位置(那个位置里如果原先有方块,就被换掉了)。众所周知从方块表里找一个特定方块是非常麻烦的,因此K打算尽可能减少从方块表里找方块的数量。
现在告诉你像素画某一行的各个方块分别是什么,快捷栏初始时是空的。试问K最少需要从方块表里找多少次方块?
输入
第一行两个整数m n,m表示有多少种方块,n表示要处理的方块数量,即像素画这一行的长度。满足0<m<1000, 0<n<100 000。 (不要问为什么要摆那么多方块,问就是盖奇观)
接下来n行,每行一个整数a_n,表示这个位置的方块种类,满足0<=a_n<m。
输出
一个整数,表示找方块的最少次数。
以上。另外还有一道附加题,和上次一样,不保证存在多项式时间的解这个题根本就是不存在了吧(。
要从家里出去去若干个地方买东西。不妨认为家在(0,0)处,其余的商店都在平面上的某个位置。由于街巷和建筑物的限制,在两个点之间移动只能横平竖直地移动。出发时携带了质量为1单位的物品,每个商店都有一个质量值,表示到那个商店后身上另外携带的质量。从家里出发,要访问所有的商店后再回家。定义每段路的体力花费为路程和携带质量的乘积。
试求一个访问商店的序列,按这个顺序访问商店,总的体力花费最小。
--------------1705更新--------------
经 @yhz012 的提醒,基本确定这个附加题是个NP完全问题