贪心算法(greedy algorithm)

想要学习更多,可以去我的github上,目前更了23种其他算法,已经公开当然后续也会在csdn上写更多
从英文名称不难看出,很有可能用到库函数algorithm。不妨写上!!由于博主目前只会c++(今后会努力的!!!),也就是include algorithm头函数中
那贪心算法究竟是干什么呢?
贪心算法
别名:贪婪法
用途:寻找最优解问题的常用方法
思路: 1.将求解过程分成若干个步骤
2.每个步骤选取当前状态下最好/最优的选择(局部最优解)
3.最后将步骤堆叠出结果—显然是最好/最优的解。
基本步骤:1.将原问题分解为子问题
2.找出贪心策略
3.得到每一个子问题的最优解
4.将所有局部最优解的集合构成称为原问题的一个解
废话不多说(实际说了挺多)上手一道题方便理解

小明的比赛

题目描述
小明的算法竞赛水平很高,他经常参加网上的比赛。

比赛的规则是这样的:要在规定时间内解决 n 道题,解决时间越晚失去的 分数就越多。

当然如果有错误提交还会扣额外的分数。为了简化题目,我们假设小明所有 题目都可以一遍 AC。

小明实在是太强了,以致于他看完所有题目就都会做了。

剩下的就是把它们 写出来的问题。

小明掐指一算,算出了写每道题需要的时间 Ti,以及每道题每分 钟会失去的分数 Ai

也就是说,如果他在 x 分钟时完成这道题,他将失去 x * Ai 的分数。 请合理安排做题顺序,使得当小明做完比赛时,失去的分数尽可能少

输入
第一行给出一个正整数 T(T<=10),表示数据组数。

对于每组数据,第一行一个正整数 n,表示这场比赛的题目数。第二行 n 个 整数,表示做每道题需要的时间 Ti。

第三行 n 个整数,表示每题每分钟失去的分 数 Ai。 其中:0<n<=100000,0<Ti,Ai<=10000

输出
对于每组数据,输出一个整数,表示最少失去的分数。
样例输入 复制
1
3
10 10 20
1 2 3
样例输出 复制
150

博主读完三遍后依然很懵逼,而且头脑一热,不就是10* 1+10* 2+20* 3==90吗?
明显不对
自己在草稿纸上写了一遍才恍然大悟

奉上代码

#include <iostream>
#include <algorithm>
using namespace std;
struct AA
{long long ti1;long long ai;double ti2;//每扣1分所用的时间
}x[100000];
int compare(AA x, AA y)
{return x.ti2 < y.ti2;
}int main()
{long long t;long long n;long long answer = 0, timsum = 0;cin >> t;while (t--){cin >> n;for (int i = 0;i < n;i++)cin >> x[i].ti1;for (int i = 0;i < n;i++){cin >> x[i].ai;x[i].ti2 = double(x[i].ti1) / x[i].ai;//算出每一组(每扣1分所用的时间)类似于:比较每一道题的价值/权重(是否最优)}sort(x, x + n, compare);//按权重从大到小排列/所扣每1分用的时间从小到大排列(sort效率较高)for (int i = 0;i < n;i++){timsum += x[i].ti1;answer += timsum * x[i].ai;//见下方表格}cout << answer << endl;answer = 0, timsum = 0;}
timsum answer
第一次 10 10*2
第二次 10+20 (10+20)*3+10 *2
第三次 10+20+10 (10+20+10)*1+ (10+20)*3+10 *2

注释:按样例输入,权重由大到小:10 *2->20 *3->10 *1
读懂这个对贪心就有大概了解
今天就这么多吧
给未来的自己:
坚持下去,纵使自己得不到别人的鲜花和掌声,收获知识就足以自豪和骄傲了!!!

菜鸟haqima的第一天(c++)篇相关推荐

  1. 菜鸟haqima的Java学习之路第一天

    菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...

  2. 菜鸟学算法一基础知识篇

    菜鸟学算法<一>知识准备篇 刚刚上任,急着给兄弟们一点见面礼,嘿嘿 前言:论坛上有关算法分析的文章不少,也不少精品 但对于刚学CARACK来说,只是叹为观止 原因如下: 1.论坛高手如云, ...

  3. 菜鸟学习笔记:Java提升篇12(Java动态性2——动态编译、javassist字节码操作)

    菜鸟学习笔记:Java提升篇12(Java动态性2--动态编译.javassist字节码操作) Java的动态编译 通过脚本引擎执行代码 Java字节码操作 JAVAssist的简单使用 常用API ...

  4. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  5. 菜鸟学习笔记:Java提升篇5(IO流1——IO流的概念、字节流、字符流、缓冲流、转换流)

    菜鸟学习笔记:Java IO流1--IO流的概念.字节流.字符流.缓冲流.转换流 IO流的原理及概念 节点流 字节流 文件读取 文件写出 文件拷贝 文件夹拷贝 字符流 文件读取 文件写出 处理流 缓冲 ...

  6. 菜鸟学习笔记:Java提升篇4(容器4——Collections工具类、其他容器)

    菜鸟学习笔记:Java容器4--Collections工具类.其他容器 Collections工具类 容器其他知识点 队列Queue Enumeration接口 Hashtable Propertie ...

  7. 菜鸟学习笔记:Java提升篇3(容器3——泛型、排序)

    菜鸟学习笔记:Java容器3--泛型.排序 泛型 泛型类 泛型接口 泛型方法 泛型继承 通配符"?" 泛型知识点补充 容器排序 Comparable接口与compareTo方法 C ...

  8. 菜鸟学习笔记:Java提升篇1(容器1——List)

    菜鸟学习笔记:Java容器1--List容器 容器基本概念 List容器 ArrayList 初始化 add方法 remove方法 LinkList 链表 双向链表 初始化 add方法 remove方 ...

  9. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

最新文章

  1. 照抄不翻车:抗住千万流量的大型分布式系统架构设计
  2. php 注册树,php常用设计模式(单例,工厂,注册树模式)
  3. 设计模式学习笔记九:原型模式(Prototype Pattern)
  4. python函数可以作为容器对象吗_正确理解Python函数是第一类对象
  5. all方法 手写promise_前端进阶高薪必看手写源码篇
  6. 2d unity 多物体 射线_24小时入门Unity游戏开发系列教程
  7. insert into select语句锁表故障
  8. python深度学习——案例讲解
  9. C语言简单程序编写(一)
  10. 领导不待见这4种员工,能力再强也不会被重用,提前被辞退
  11. cad横断面图转文本
  12. 量子世界的测不准定律
  13. RK3066的uboot源码分析
  14. c语言文件分割与合并
  15. 谷歌浏览器87版本 iframe_谷歌Chrome的“混合内容”更新将会影响电商网站,自建站卖家如何应对?...
  16. 乌镇饭局后,阿里腾讯走向了分岔路
  17. 计算机考研专业课各题分占比,考研计算机常见的6个问题!
  18. 对于offsetWidth,offsetHeight,offsetLeft,offsetTop的理解
  19. 个人开发者的白piao云服务器
  20. 微盛·企微管家杨明:未来企业微信生态能诞生中国的Salesforce

热门文章

  1. 2021年中国在线教育行业投融资现状及未来发展趋势分析[图]
  2. 新冠疫情可视化(7月7日,7月8日)
  3. 万能配置的大屏可视化功能来啦~
  4. E1 CE1 T1 BRI PRI
  5. extjs 引入html页面,Extjs嵌入html
  6. 20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结
  7. matlab对于图像压缩,Matlab的图像压缩技术
  8. python升级pip
  9. 2020牛客暑期多校训练营(第八场)E Enigmatic Partition —— 找规律,差分上差分,有丶东西
  10. 【Spring Cloud Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权