2022-01-01:给定int[][] meetings,比如 { {66, 70} 0号会议截止时间66,获得收益70 {25, 90} 1号会议截止时间25,获得收益90
2022-01-01:给定int[][] meetings,比如
{
{66, 70} 0号会议截止时间66,获得收益70
{25, 90} 1号会议截止时间25,获得收益90
{50, 30} 2号会议截止时间50,获得收益30
}
一开始的时间是0,任何会议都持续10的时间,但是一个会议一定要在该会议截止时间之前开始,
只有一个会议室,任何会议不能共用会议室,一旦一个会议被正确安排,将获得这个会议的收益。
请返回最大的收益。
答案2022-01-01:
按截止时间从小到大排序,小根堆。
代码用golang编写。代码如下:
package main
import (
"fmt"
"sort"
)
func main() {
meetings := [][]int{{6, 20}, {9, 50}, {13, 42}}
ret := maxScore1(meetings)
fmt.Println(ret)
ret = maxScore2(meetings)
fmt.Println(ret)
}
func maxScore1(meetings [][]int) int {
//Arrays.sort(meetings, (a, b) -> a[0] - b[0]);
sort.Slice(meetings, func(i, j int) bool {
return meetings[i][0] < meetings[j][0]
})
//int[][] path = new int[meetings.length][];
path0 := make([][]int, len(meetings))
for i := 0; i < len(meetings); i++ {
path0[i] = make([]int, 2)
}
size := 0
return process1(meetings, 0, path0, size)
}
func process1(meetings [][]int, index int, path0 [][]int, size int) int {
if index == len(meetings) {
time := 0
ans := 0
for i := 0; i < size; i++ {
if time+10 <= path0[i][0] {
ans += path0[i][1]
time += 10
} else {
return 0
}
}
return ans
}
p1 := process1(meetings, index+1, path0, size)
path0[size] = meetings[index]
p2 := process1(meetings, index+1, path0, size+1)
// path[size] = null;
return getMax(p1, p2)
}
func getMax(a, b int) int {
if a > b {
return a
} else {
return b
}
}
func maxScore2(meetings [][]int) int {
sort.Slice(meetings, func(i, j int) bool {
return meetings[i][0] < meetings[j][0]
})
heap := make([]int, 0)
time := 0
// 已经把所有会议,按照截止时间,从小到大,排序了!
// 截止时间一样的,谁排前谁排后,无所谓
for i := 0; i < len(meetings); i++ {
if time+10 <= meetings[i][0] {
heap = append(heap, meetings[i][1])
sort.Slice(heap, func(i, j int) bool {
return heap[i] < heap[j]
})
time += 10
} else {
if len(heap) > 0 && heap[0] < meetings[i][1] {
heap[0] = meetings[i][1]
sort.Slice(heap, func(i, j int) bool {
return heap[i] < heap[j]
})
}
}
}
ans := 0
for len(heap) > 0 {
ans += heap[0]
heap = heap[1:]
sort.Slice(heap, func(i, j int) bool {
return heap[i] < heap[j]
})
}
return ans
}
执行结果如下:
2022-01-01:给定int[][] meetings,比如 { {66, 70} 0号会议截止时间66,获得收益70 {25, 90} 1号会议截止时间25,获得收益90的更多相关文章
- (五)u-boot2013.01.01 for TQ210:《移植前的准备及u-boot初编译》
移植前的准备 移植前,要做的事情是搭建开发环境以及对U-boot源码的获取.首先说一下开发环境: 1.此次U-boot移植的硬件平台是天嵌的TQ210开发板: CPU:板载核心是S5PV210(Cor ...
- (二)u-boot2013.01.01 for TQ210:《Makefile分析》
当时写的时候看的是2012-10版本的,但是略对比了一遍和2013.01.01没什么改动,所以这不影响对2013.01.01版本的makefile的理解.本文比较侧重于语法句意的分析,框 ...
- (一)u-boot2013.01.01 for TQ210:《Uboot简介》
一直想写一个s5pv210硬件平台的u-boot的移植文档,但一直都忙着没时间写.先写一些u-boot的脚本分析吧,包括makefile,mkconfig,config.mk,主要侧重于语法句意的分析 ...
- org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '2012-12-12 12:01:01': not a valid representation (error: Can not parse date "2012-12-
Jackson对于date的反序列化只支持几种,如果不符合默认格式则会报一下错误 org.codehaus.jackson.map.JsonMappingException: Can not cons ...
- 2015.12.25-2016.01.01 大论文迭代B
大论文B轮迭代,稍重前端 12.25 周五,完善摘要 12.26 周六,完善第一章 12.27 周天,完善第二章 12.28 周一,完善第三章 12.29 周二,完善第四章 12.30 周三,完善第五 ...
- 2019.01.01 bzoj3625:小朋友和二叉树(生成函数+多项式求逆+多项式开方)
传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: ...
- 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)
4725传送门 4726传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; in ...
- for循环练习题(1 ,判断任意一个数是91的多少倍 2,编写程序实现给定一个整数判断它从0到这个整数中间出现多少次9的次数)
1 //判断任意一个数是9的多少倍 #include <stdio.h> #include <stdlib.h> int main() { printf("请输入任意 ...
- c/c++ int数组初始化/重置为0
1.int数组其实初始化的时候默认就是全部为0 int a[1000];int a[1000] = {0}; 以上2种写法其实都可以 注意:int a[1000] = {0};这种方法如果想把整形数组 ...
- day 01 常量 注释 int(整型) 用户交互input 流程控制语句if
python的编程语言分类(重点) if 3 > 2: 编译型: 将代码一次性全部编译成二进制,然后再执行. 优点:执行效率高. 缺点:开发效率低,不能跨平台. 代表语言:C 解释型: 逐行解释 ...
随机推荐
- 韦东山005_ARM裸机1期加强版
005_ARM裸机1期加强版(又叫新1期,151节,23节免费,已完结)\新1期视频(151节,23节免费) 第006课开发板熟悉与体验(6节,免费) 第001节_开发板部件介绍与串口连接(免费) 如 ...
- 在MDK 5中打开MDK 4工程要注意的问题1
我是生手,对于MDK的理解还很简单.以下内容是遇到的一种情况. 有一个MDK 4工程,要求顺序点亮4个LED灯,工程已经建好. 在MDK 5中打开,编译都没问题,要烧写时,提示"can no ...
- 【Linux 中断】红外接收器设备驱动
一.概述 现在很多家电都使用了红外,而智能家居的诞生,连音响都带了红外遥控功能.为了解决家里遥控器比较多的情况,多数手机都支持了红外功能,这和以前的万能遥控器一样.这里主要记录红外接收的驱动,当然明白 ...
- 使用vCenter对ESXi主机进行补丁升级
使用vCenter 对ESXi 主机进行补丁升级 背景说明:公司内部有许多ESXi主机需要进行补丁升级,记录一下通过vCenter对ESXi主机进行补丁升级的过程,也可以使用esxcli命令行方式: ...
- 声网赵斌:RTE 体验提升,新一代 Killer App 将成为现实丨RTE 2022
一年以来,在疫情及诸多综合因素的推动下,元宇宙.无人驾驶. IoT.电商直播等行业迎来井喷式发展,RTE 实时互动技术也在越来越多的场景中发挥着关键作用.在刚刚过去的 RTE 2022 第八届实时互联 ...
- 详解低延时高音质:丢包、抖动与 last mile 优化那些事儿
本篇是「详解低延时高音质系列」的第三篇技术分享.我们这次要将视角放大,从整个音频引擎链路的角度,来讲讲在时变的网络下,针对不同的应用场景,如何权衡音质和互动的实时性. 当我们在讨论实时互动场景下的低延 ...
- RPC通信原理概述
RPC通信原理概述 1.RPC概述 1.什么是RPC RPC(Remote Procedure Call Protocol)远程过程调用协议.它是一种通过网络从远程计算机程序上请求服务,而不需要了解底 ...
- 在asp.net core webapi 中开启swagger
首先需要安装包 Swashbuckle.AspNetCore 接着在项目中右键属性 接着在Startup 文件中声明一个字段 private string currentAssemblyName = ...
- 对一些常用RDD算子的总结
虽然目前逐渐sql化,但是掌握 RDD 常用算子是做好 Spark 应用开发的基础,而数据转换类算子则是基础中的基础,因此学习这些算子还是很有必要的. 这篇博客主要参考Spark官方文档中RDD编程一 ...
- 我为什么推荐Nuxt3
我为什么推荐Nuxt3? 大家好,我今天想和你们分享一个非常棒的前端框架--Nuxt3.自从我接触了Nuxt3,我发现它在前端开发领域具有很多优点.我想逐一向你们介绍Nuxt3的优势,并向大家推荐一些 ...