news 2026/5/13 10:42:08

4022:【GESP2309五级】巧夺大奖

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
4022:【GESP2309五级】巧夺大奖

【题目描述】

小明参加了一个巧夺大奖的游戏节目。主持人宣布了游戏规则:

1、游戏分为n 个时间段,参加者每个时间段可以选择一个小游戏。

2、游戏中共有n 个小游戏可供选择。

3、每个小游戏有规定的时限和奖励。对于第i 个小游戏,参加者必须在第Ti 个时间段结束前完成才能得到奖励Ri 。

小明发现,这些小游戏都很简单,不管选择哪个小游戏,他都能在一个时间段内完成。关键问题在于,如何安排每

个时间段分别选择哪个小游戏,才能使得总奖励最高?

【输入】

输入第一行,包含一个正整数n 。 n既是游戏时间段的个数,也是小游戏的个数。约定1≤n≤500 。

输入第二行,包含n 个正整数。第i 个正整数为 Ti,即第i 个小游戏的完成期限。约定1≤Ti≤n 。

输入第三行,包含n 个正整数。第i 个正整数为 Ri,即第i 个小游戏的完成奖励。约定1≤Ri≤1000 。

【输出】

输出一行,包含一个正整数C ,为最高可获得的奖励。

【输入样例】

7 4 2 4 3 1 4 6 70 60 50 40 30 20 10

【输出样例】

230

【提示】

样例解释1

7个时间段可分别安排完成第4、2、3、1、6、7、5个小游戏,其中第4、2、3、1、7个小游戏在期限内完成。因此,可以获得总计40+60+50+70+10=230 的奖励

解析:

测试数据

7

4 2 4 3 1 4 6

70 60 50 40 30 20 10

按完成时间排序

1 2 3 4 4 4 6

30 60 40 70 50 20 10

倒着选择游戏

6 可选为10

剩余:

1 2 3 4 4 4 6

30 60 40 70 50 20 -

5 因为可以拖延到5完成的游戏 只有6对应的10,10已被选择,所以5无可选游戏

剩余:

1 2 3 4 4 4 6

30 60 40 70 50 20 -

4 可选为70 50 20,选最大值70

剩余:

1 2 3 4 4 4 6

30 60 40 - 50 20 -

3 可选为4-50 4-20 3-40,选最大值50

剩余:

1 2 3 4 4 4 6

30 60 40 - - 20 -

2 可选为4-20 3-40 2-60,选最大值60

剩余:

1 2 3 4 4 4 6

30 - 40 - - 20 -

1 可选为4-20 3-40 1-30,选最大值40

剩余:

1 2 3 4 4 4 6

30 - - - - 20 -

最终数据:

6 5 4 3 2 1

10 0 70 50 60 40

40+60+50+70+10=230

#include <bits/stdc++.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int n; struct x{ int t,r; }; x a[500]; bool cmp(x a,x b){ if(a.t==b.t){ return a.r>b.r; } else return a.t>b.t; } int main(int argc, char** argv) { scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&a[i].t); for(int i=0;i<n;i++)scanf("%d",&a[i].r); sort(a,a+n,cmp); /*for(int i=0;i<n;i++){ printf("%d-%d ",a[i].t,a[i].r); } cout<<endl;*/ long long sum=0; x *p_max; for(int i=a[0].t;i>0;i--){ p_max=NULL; for(int j=0;j<n;j++){ if(a[j].t>=i){ if(a[j].r>0){ if(p_max==NULL)p_max=&a[j]; else if(a[j].r>p_max->r)p_max=&a[j]; } } else break; } if(p_max!=NULL){ sum+=p_max->r; //cout<<p_max->r<<" "; p_max->r=0; } } cout<<sum; /*测试数据 7 4 2 4 3 1 4 6 70 60 50 40 30 20 10 按完成时间排序 1 2 3 4 4 4 6 30 60 40 70 50 20 10 倒着选择游戏 6 可选为10 剩余: 1 2 3 4 4 4 6 30 60 40 70 50 20 - 5 因为可以拖延到5完成的游戏 只有6对应的10,10已被选择,所以5无可选游戏 剩余: 1 2 3 4 4 4 6 30 60 40 70 50 20 - 4 可选为70 50 20,选最大值70 剩余: 1 2 3 4 4 4 6 30 60 40 - 50 20 - 3 可选为4-50 4-20 3-40,选最大值50 剩余: 1 2 3 4 4 4 6 30 60 40 - - 20 - 2 可选为4-20 3-40 2-60,选最大值60 剩余: 1 2 3 4 4 4 6 30 - 40 - - 20 - 1 可选为4-20 3-40 1-30,选最大值40 剩余: 1 2 3 4 4 4 6 30 - - - - 20 - 最终数据: 6 5 4 3 2 1 10 0 70 50 60 40 40+60+50+70+10=230 */ return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 17:04:55

2016-2025年地级市绿色数字中心政策数据DID

数据简介 绿色数字中心&#xff0c;是新一代致力于实现可持续发展的信息基础设施。它聚焦于能源效率的深度优化、环境影响的显著降低&#xff0c;以及资源循环利用水平的大幅提升。为达成这一目标&#xff0c;采取多维度协同推进的策略&#xff1a;积极推动技术创新&#xff0…

作者头像 李华
网站建设 2026/5/12 2:27:46

单例(静态代码块饿汉式)

实现优缺点说明 这种方式和静态常量的方式类似&#xff0c;只不过将类实例化的过程放在了静态代码块中&#xff0c;也是在类装载的时候&#xff0c;就执行静态代码块中的代码&#xff0c;初始化类的实例 结论&#xff1a;这种单例模式可用&#xff0c;但是可能造成内存浪费

作者头像 李华
网站建设 2026/5/12 0:09:10

不同应用场景下,LoRaWAN 室内与室外网关的正确选择方式

在搭建 LoRaWAN 网络时&#xff0c;很多人第一步就卡住了&#xff1a; 到底该选室内网关&#xff0c;还是室外网关&#xff1f; 参数看起来差不多&#xff0c;价格却差不少&#xff1b; 都说能覆盖&#xff0c;实际效果却天差地别。 这篇文章&#xff0c;我们不讲复杂理论&am…

作者头像 李华
网站建设 2026/5/1 1:09:28

【观察】联想数据网络训推一体解决方案:三位一体,铸就“全能ACE”

当前&#xff0c;我们正处于人工智能技术变革的关键历史节点。在这场浪潮中&#xff0c;如何准确把握技术趋势&#xff0c;将AI深度融合到行业实际场景中&#xff0c;以更高效率、更低成本、更广覆盖的方式赋能行业的智能化转型&#xff0c;已成为全社会关注的焦点。在此背景下…

作者头像 李华
网站建设 2026/5/12 9:36:07

C++ 开发者的救星:vcpkg 极速上手与避坑完全指南

文章目录C 开发者的救星&#xff1a;vcpkg 极速上手与避坑完全指南1. 为什么你需要 vcpkg&#xff1f;&#xff08;痛点回顾&#xff09;2. vcpkg 是怎么工作的&#xff1f;&#xff08;底层逻辑&#xff09;3. 保姆级安装流程&#xff08;Windows 篇&#xff09;3.1 准备工作&…

作者头像 李华
网站建设 2026/5/2 23:39:42

【第1章 计算机、程序与C语言】-1.4程序的编写、编译与运行全流程

文章目录 第二章:程序的编写、编译与运行全流程 2.1 编程环境的哲学:从思想到机器码的转换 2.1.1 编程的本质:多层次抽象 2.2 程序编写:从构思到代码 2.2.1 问题分析与算法设计 2.2.2 编程方法论:结构化编程原则 2.3 编译过程:从源代码到可执行文件 2.3.1 编译的四个阶段…

作者头像 李华