2017"百度之星"程序设计大赛 - 资格赛 1003

本文介绍了一个算法问题,度度熊需战胜多个怪兽,每个怪兽有不同的生命值和防御力。度度熊拥有多种技能,每种技能消耗不同数量的晶石并造成特定伤害。文章探讨了如何计算度度熊至少需要携带多少晶石才能消灭所有怪兽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

度度熊与邪恶大魔王

 
 
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 32768/32768 K (Java/Others)
Problem Description

度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来。

邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力。

度度熊一共拥有m种攻击方式,第i种攻击方式,需要消耗k[i]的晶石,造成p[i]点伤害。

当然,如果度度熊使用第i个技能打在第j个怪兽上面的话,会使得第j个怪兽的生命值减少p[i]-b[j],当然如果伤害小于防御,那么攻击就不会奏效。

如果怪兽的生命值降为0或以下,那么怪兽就会被消灭。

当然每个技能都可以使用无限次。

请问度度熊最少携带多少晶石,就可以消灭所有的怪兽。

Input

本题包含若干组测试数据。

第一行两个整数n,m,表示有n个怪兽,m种技能。

接下来n行,每行两个整数,a[i],b[i],分别表示怪兽的生命值和防御力。

再接下来m行,每行两个整数k[i]和p[i],分别表示技能的消耗晶石数目和技能的伤害值。

数据范围:

1<=n<=100000

1<=m<=1000

1<=a[i]<=1000

0<=b[i]<=10

0<=k[i]<=100000

0<=p[i]<=1000

Output

对于每组测试数据,输出最小的晶石消耗数量,如果不能击败所有的怪兽,输出-1

Sample Input
1 2
3 5
7 10
6 8
1 2
3 5
10 7
8 6
Sample Output
6
18
2016年9月的百度程序设计大赛赛题并未在提供的引用中明确提及[^1]。然而,根据历史趋势和百度的比赛特点,可以推测该年的赛题可能与当时的互联网热点、算法优化以及人工智能初步应用相关。从2015年开始,随着人工智能浪潮的兴起,百度的赛题逐渐向AI算法倾斜,并结合实际应用场景设置题目[^1]。 以下是基于历史背景推测可能的赛题类型: ### 赛题推测 1. **算法优化问题** 可能涉及大规模数据处理或图论问题,例如最短路径、网络流等经典算法的优化版本。这类题目通常要求选手在限定时间内完成高效实现,同时考察代码性能和复杂度。 2. **人工智能初步应用** 题目可能围绕简单的机器学习任务展开,例如分类问题或回归预测。参赛者需要使用基础的数学模型(如线性回归、K近邻算法)解决实际问题,这符合2015年后百度转向AI的趋势[^1]。 3. **字符串处理与模式匹配** 字符串处理是程序设计竞赛中的常见主题,可能涉及复杂的文本分析或模式匹配任务。这类题目通常要求高效的算法设计和边界条件处理。 4. **动态规划与组合优化** 动态规划问题可能出现在赛题中,考察选手对状态转移方程的设计能力。例如,资源分配、路径规划等问题。 ### 示例代码 以下是一个可能的赛题示例及解决方案: #### 示例赛题 给定一个长度为N的数组A,求其中最长的递增子序列的长度。 #### 解决方案 ```python def longest_increasing_subsequence(arr): if not arr: return 0 dp = [1] * len(arr) for i in range(1, len(arr)): for j in range(i): if arr[i] > arr[j]: dp[i] = max(dp[i], dp[j] + 1) return max(dp) # 示例输入 arr = [10, 9, 2, 5, 3, 7, 101, 18] print(longest_increasing_subsequence(arr)) # 输出: 4 ``` ### 注意事项 根据引用内容,比赛结束后需确保提交的成果符合竞赛要求,禁止在成果中添加任何与竞赛无关的标记[^2]。此外,开发过程中应注重团队协作和成果完整性,确保每个阶段的任务都能按时交付[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值