A71634 | 算法学习
来源编程题
时间限制1s
内存限制512MB
通过 / 提交0/0
题目描述
小杨计划学习 m 种算法,为此他找了 n 道题目来帮助自己学习,每道题题目至多学习一次。
小杨对于 m 种算法的初始掌握程度均为 0 。第 i 道题目有对应的知识点 a_i,即学习第 i 道题目可以令小杨对第 a_i 种算法的掌握程度提高 b_i 。小杨的学习目标是对 m 种算法的掌握程度均至少为 k。
小杨认为连续学习两道相同知识点的题目是不好的,小杨想请你编写程序帮他计算出他最少需要学习多少道题目才能使得他在完成学习目标的同时避免连续学习两道相同知识点的题目。
输入格式
第一行三个正整数 m,n,k,代表算法种类数,题目数和目标掌握程度。
第二行 n 个正整数 a_1 , a_2, a_3, \dots ,a_n,代表每道题目的知识点。
第二行 n 个正整数 b_1 , b_2, b_3, \dots ,b_n,代表每道题目提升的掌握程度。
输出格式
输出一个整数,代表小杨最少需要学习题目的数量,如果不存在满足条件的方案,输出 -1。
输入输出样例
输入 #1
3 5 10 1 1 2 3 3 9 1 10 10 1
输出 #1
4
输入 #2
2 4 10 1 1 1 2 1 2 7 10
输出 #2
-1
输入 #3
7 12 8 1 2 3 4 4 4 5 6 6 7 7 7 10 10 10 2 5 6 10 10 7 2 8 10
输出 #3
8
样例 1 解释
对于样例 1,一种最优学习顺序为第一道题,第三道题,第四道题,第二道题。
数据范围
对于全部数据,保证有 1 \le m,n \le 10^5,1 \le b_i,k \le 10^5 ,1 \le a_i \le m 。
| 子任务编号 | 数据点占比 | m | n | b_i | k |
|---|---|---|---|---|---|
| 1 | 30\% | = 2 | \le 9 | \le 10 | \le 10 |
| 2 | 30\% | \le 9 | \le 9 | \le 10 | \le 10 |
| 3 | 40\% | \le 10^5 | \le 10^5 | \le 10^5 | \le 10^5 |
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?