前言

这题 不 有点麻烦,可能有更好的解法,笔者的方法通俗易懂,希望大家都能A掉这道题

先看题目

时间限制 : 10000 MS
空间限制 : 65536 KB

问题描述
小伟报名参加中央电视台的智力大冲浪节目。主持人为了表彰大家的勇气,先奖励每个参赛者m元。
比赛规则:
首先,比赛时间分为n个时段(n≤500),它又给出了很多小游戏,每个小游戏都必须在规定期限ti前完成(1≤ti≤n)。
如果一个游戏没能在规定期限前完成,则要从奖励费m元中扣去一部分钱wi,wi为自然数,不同的游戏扣去的钱是不一样的。当然,每个游戏本身都很简单,保证每个参赛者都能在一个时段内完成,而且都必须从整时段开始。主持人只是想考考每个参赛者如何安排组织自己做游戏的顺序。作为参赛者,小伟很想赢得冠军,当然更想赢取最多的钱!注意:比赛绝对不会让参赛者赔钱!

输入格式
共4行:
第1行为m,表示一开始奖励给每位参赛者的钱;
第2行为n,表示有n个小游戏;
第3行有n个数,分别表示游戏1到n的规定完成期限;
第4行有n个数,分别表示游戏1到n不能在规定期限前完成的扣款数。

输出格式
小伟能赢取最多的钱。

样例输入
10000
7
4 2 4 3 1 4 6
70 60 50 40 30 20 10
样例输出
9950

开始解题

这是一道贪心算法的题目,希望小伟能的更多的钱,所以我们可以把罚款钱数的数组排序,先做罚款大的任务,而为了将每个任务都最优化,越到截止时间再做任务收益是最大的。
基本思路已经成型,可以思考代码了。写结构体数组方便管理,因此排序要写cmp,排序后遍历罚金列表,在对应的截止日期前挨个确认是否已有任务,越先确认就是最优解,若没有找到空闲的时间就累计罚金,最后计算输出。

代码详解

定义

int m,n,sum;//sum为罚金累计
bool b[505],t=false;//b数组为是否有时间,t为是否有空余时间
struct node{int data,mo;//截止日期和罚金
}a[505];
bool cmp(node x,node y){return x.mo>y.mo;}//从大到小排

输入……

cin>>m>>n;
for(int i=0;i<n;i++)cin>>a[i].data;
for(int i=0;i<n;i++)cin>>a[i].mo;

排序……

sort(a,a+n,cmp);

重点部分!

for(int i=0;i<n;i++){t=false;//每次循环重置变量for(int j=a[i].data;j>=1;j--){//从截止日期开始找if(b[j]==false){//有空余时间b[j]=true;//时间被占用t=true;//找到了break;//直接跳出}}if(t==false)sum+=a[i].mo;//没找到就累加罚金
}

输出……

cout<<m-sum;

代码

新鲜出炉~

#include <bits/stdc++.h>
using namespace std;
struct node{int data,mo;
}a[505];
bool cmp(node x,node y){return x.mo>y.mo;}
int m,n,sum;
bool b[505],t=false;
int main(){cin>>m>>n;for(int i=0;i<n;i++)cin>>a[i].data;for(int i=0;i<n;i++)cin>>a[i].mo;sort(a,a+n,cmp);for(int i=0;i<n;i++){t=false;for(int j=a[i].data;j>=1;j--){if(b[j]==false){b[j]=true;t=true;break;}}if(t==false)sum+=a[i].mo;}cout<<m-sum;return 0;
}

结语

这道题考了贪心,思想上有点难,但理解过来就行了

CQNKOJ P5215 智力大冲浪(贪心算法)题解相关推荐

  1. C语言(CED)智力大冲浪——贪心算法第一题

    一.题目大意 小伟报名参加中央电视台的智力大冲浪节目,本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的!接下来主持人宣布了比赛规则: ...

  2. 洛谷P1230 智力大冲浪(贪心)

    P1230 智力大冲浪 题解:准着一个贪心思想,在尽可能短的时间内,做价值尽可能多的题. 因此,我们可以按照价值从大到小排个序,然后对于每一道题看在时间限制内可以做哪几道题.时间复杂度Θ(N2)\Th ...

  3. P1230 智力大冲浪 贪心

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...

  4. 贪心算法之智力大冲浪

    #!/usr/bin/python3 # 文件名: 贪心算法之智力大冲浪 # 作者:巧若拙 # 时间:2018-12-29 ''' 智力大冲浪(riddle.pas). [题目描述] 小伟报名参加中央 ...

  5. 贪心算法——智力大冲浪

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 m 元.先不要太高兴!因为这些钱还不一定都是你的,接下来主持人宣布了比赛规则: ...

  6. 贪心算法(5.智力大冲浪+解题思路)

    1.带期限和罚款的单位时间任务调度                                                         智力大冲浪 题目描述 小伟报名参加中央电视台的智力大 ...

  7. 智力大冲浪 【贪心】

    题目链接:https://loj.ac/problem/10004 题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 m 元.先 ...

  8. 洛谷p1230 智力大冲浪 (贪心问题)

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...

  9. 追梦算法----智力大冲浪

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 m 元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则 ...

最新文章

  1. Distance 几何,构造(800)
  2. graphpad如何做x轴在上方的图_R-ggridges包:山峰叠峦图
  3. 车联网大数据框架_FEV:基于最新网关技术管理车联网大数据
  4. ASP.NET MVC 入门系列教程
  5. python引用传递_python 是值传递还是引用传递 知乎
  6. oracle清理表空间文件,如何自动删除表空间的文件?
  7. monkey基本命令及脚本编写
  8. 用pycharm+flask 建立项目以后运行出现ImportError: No module named flask-login问题
  9. 华为手机怎么查看ip 网关
  10. linux查看虚拟内存使用,Linux 使用 vmstat 查看虚拟内存状态
  11. 冻结表格模板html,Excel冻结单元格(锁定单元格)用选项和快捷键,含冻结一个、多个和有公式的单元格及冻结表格格式不能输入...
  12. 怎么修改图片为300dpi?如何在线修改分辨率?
  13. 十年牧码,我的平凡之路
  14. 【stm32】单片机学习——小车的开环控制
  15. 利用QQ群推广网站的经验分享
  16. pycharm中的红色小闪电
  17. 地理生物结业考_地理、生物结业主要考什么?
  18. java什么时候触发gc_什么时候触发 GC
  19. python实现一个学生管理系统
  20. 神经网络算法的应用领域,神经元网络算法的思想

热门文章

  1. 开发模型的理解:瀑布模型/增量式/迭代/敏捷开发——笔记
  2. 报名学习开课吧Java商业项目实战就业班
  3. 【Leetcode】416. 分割等和子集
  4. 用热塑技术修复供水(给水)燃气等压力管道的非开挖技术
  5. 星空主题设计理念_星空主题餐厅设计
  6. Lucene中的同义词
  7. 想做游戏开发要深入c/c++还是c#?
  8. 【100个 Unity实用技能】☀️ | Unity中设置 允许的最大帧数,锁定游戏的最大帧率(游戏锁帧)
  9. Bzoj1115 石子游戏Kam
  10. oracle采购开票怎么退,购买方退货如何开票