当前位置: 首页 > news >正文

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; }
http://www.jsqmd.com/news/364768/

相关文章:

  • 什么是强连通图
  • 【完整源码+数据集+部署教程】交通工具与动物实例分割系统源码&数据集分享 [yolov8-seg-C2f-SCConv&yolov8-seg-repvit等50+全套改进创新点发刊_一键训练教程_W
  • 【完整源码+数据集+部署教程】垃圾分类分割系统源码&数据集分享 [yolov8-seg-GFPN&yolov8-seg-timm等50+全套改进创新点发刊_一键训练教程_Web前端展示]
  • 【完整源码+数据集+部署教程】条形码图像分割系统源码&数据集分享 [yolov8-seg-SPDConv&yolov8-seg-swintransformer等50+全套改进创新点发刊_一键训练教程
  • 追更 HelloGitHub 一整年,终于等到了这篇年度盘点
  • 【完整源码+数据集+部署教程】手势分割系统源码&数据集分享 [yolov8-seg-C2f-ODConv&yolov8-seg-C2f-DCNV3等50+全套改进创新点发刊_一键训练教程_Web前端
  • 基于Java的微影院数字影厅智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 【完整源码+数据集+部署教程】钢管缺陷分割系统源码&数据集分享 [yolov8-seg-RevCol&yolov8-seg-EfficientHead等50+全套改进创新点发刊_一键训练教程_Web
  • 基于Java的微聊智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 基于Java的微型水电站监管智慧管理系统的设计与实现全方位解析:附毕设论文+源代码
  • 完整教程:2025年优化算法:多策略改进蛇优化算法( Improved Snake Optimizer,ISO)
  • 超越Git:迈向数据驱动的机器学习模型版本管理
  • 2007—2024年基于ADB投入产出表计算的生产链长度数据+代码
  • 2000-2025年县域5A级旅游景区DID
  • 2016-2025年地级市绿色数字中心政策数据DID
  • No150:AI中国故事-对话沈括——博学实证与AI认知:跨界融合与科学方法
  • 【计算机网络】NAT技能深度解析:从原理到NAPT实现的工作机制
  • springboot基于java的考研论坛系统(源码+文档+运行视频+讲解视频)
  • Ultralytics YOLO26 官方使用指南:从安装到部署的完整实践 附下载链接
  • 完整教程:从0开始学算法——第十九天(并查集)
  • 小喵播放器 1.1.8 | 视频超分提升画质 支持网页视频与B站番剧播放
  • Xtra 2.53.6 | Twitch直播第三方客户端,开源纯净无广
  • 探讨诚信的卡西欧手表专业批发公司,港滙直销香港有限公司哪家好 - 工业品网
  • 想了解数跃精准学技术实力,看这篇分析就够了 - mypinpai
  • 分享高低温试验箱选购经验,操作简便的品牌推荐 - 工业品牌热点
  • 单例(静态代码块饿汉式)
  • 2026年靠谱的遥控无人机手持终端工厂,口碑厂家推荐 - 工业推荐榜
  • 2026年济南安全教育展厅建设专业公司排名,北京三月雨口碑优异 - 工业设备
  • 2026国产三维扫描仪替代加速:十大品牌综合实力与选购指南 - 匠言榜单
  • 2026年2月西安近视防控/近视矫正眼镜品牌TOP5解析:技术重构格局,选型决定企业竞争未来 - 2026年企业推荐榜