小慕正在开发一个代码质量检测工具,该工具通过静态扫描来快速识别源代码中的缺陷。扫描结果以报告形式输出。扫描过程中涉及以下规则: 1. 扫描一个文件的成本与文件大小有关:若文件大小为 N,则。 2. 扫描报告的缓存成本与文件大小无关:每缓存一份报告需要花费 M 个金币。 3. 一旦某份报告被缓存,后续再次遇到该文件时,无需再次扫描,可直接获取缓存结果。 现在小慕拿到了一组源代码文件的标识序列和对应的文件大小序列,请你帮助他设计合理的,计算出完成所有文件扫描所需的最少金币数。
提示:带虚线的词点一下有通俗解释。
输入描述
第一行为缓存一个报告金币数M,1 <= M <= 100 第二行为文件标识序列:F1,F2,F3,…,Fn。 第三行为文件大小序列:S1,S2,S3,…,Sn。 - 1 <= N <= 10000 - 1 <= Fi <= 1000 - 1 <= Si <= 10
输出描述
采用合理的缓存策略,需要的最少金币数
示例
示例 1
输入
5 1 2 2 1 2 3 4 1 1 1 1 1 1 1
输出
7
说明:文件大小相同,扫描成本均为1个金币。缓存任意文件均不合算,因而最少成本为7金币。
示例 2
输入
5 2 2 2 2 2 5 2 2 2 3 3 3 3 3 1 3 3 3
输出
9
时间限制 1000 ms · 内存限制 128 MB