返回首页 返回题库

算法学习

C++ 中等 GESP六级真题 #贪心#排序

题目描述

题面描述

小杨计划学习 种算法,为此他找了 道题目来帮助自己学习,每道题目至多学习一次。

小杨对于 种算法的初始掌握程度均为 0。第 道题目有对应的知识点 ,即学习第 道题目可以令小杨对第 种算法的掌握程度提高 。小杨的学习目标是对 种算法的掌握程度均至少为 。

小杨认为连续学习两道相同知识点的题目是不好的,小杨想请你编写程序帮他计算出他最少需要学习多少道题目才能使得他在完成学习目标的同时避免连续学习两道相同知识点的题目。

输入格式

第一行三个正整数 ,代表算法种类数,题目数和目标掌握程度。

第二行 个正整数 ,代表每道题目的知识点。

第三行 个正整数 ,代表每道题目提升的掌握程度。

输出格式

输出一个整数,代表小杨最少需要学习题目的数量,如果不存在满足条件的方案,输出 -1。

样例1

输入:

3 5 10
1 1 2 3 3
9 1 10 10 1

输出:

4

样例解释:一种最优学习顺序为第一道题,第三道题,第四道题,第二道题。

样例2

输入:

2 4 10
1 1 1 2
1 2 7 10

输出:

-1

数据范围

对于全部数据,保证有 。

子任务说明:

  • 子任务1(30%):,,,
  • 子任务2(30%):,,,
  • 子任务3(40%):,,,

时间与内存限制

时间限制:1.0 s

内存限制:512.0 MB

💡 查看提示(先自己想一想再看)
考察贪心算法、排序、逻辑推理能力。解题思路:首先对每个知识点的题目分数降序排序,计算每个知识点达到目标k所需的最少题目数,若有知识点无法达到直接返回-1。然后判断所需最多题目的知识点的数量是否可以通过其他知识点的题目穿插,若不够则还可以用其他知识点剩余的题目来穿插,最终判断是否存在合法方案。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 2 浏览

讨论(0)