2022-12-08:给定n棵树,和两个长度为n的数组a和b i号棵树的初始重量为a[i],i号树每天的增长重量为b[i] 你每天最多能砍1棵树,这天收益 = 砍的树初始重量 + 砍的树增长到这天的总
2022-12-08:给定n棵树,和两个长度为n的数组a和b
i号棵树的初始重量为a[i],i号树每天的增长重量为b[i]
你每天最多能砍1棵树,这天收益 = 砍的树初始重量 + 砍的树增长到这天的总增重
给定m,表示你有m天,返回m天内你获得的最大收益。
答案2022-12-08:
排序+贪心。
代码用rust编写。代码如下:
use std::iter::repeat;
fn main() {
unsafe {
let ins = [2, 2, 1, 10, 10, 1, 1, 2, 2, 8, 10, 2, 3];
let mut ii = 0;
let testCases = ins[ii];
ii += 1;
for i in 0..testCases {
//
let n = ins[ii];
ii += 1;
let m = ins[ii];
ii += 1;
for j in 0..n {
tree[j as usize][0] = ins[ii];
ii += 1;
}
for j in 0..n {
tree[j as usize][1] = ins[ii];
ii += 1;
}
let ans = max_weight(n, m);
println!("ans = {}", ans);
}
}
}
static mut tree: [[i32; 2]; 250] = [[0; 2]; 250];
static mut dp: [[i32; 250]; 250] = [[0; 250]; 250];
// tree[][]
// i棵树,初始重量 , tree[i][0]
// i棵树,每天的增长重量 ,tree[i][1]
fn max_weight(n: i32, m: i32) -> i32 {
unsafe {
//Arrays.sort(tree, 0, n, (o1, o2) -> o1[1] - o2[1]);
tree[..n as usize].sort_by(|a, b| a[1].cmp(&b[1]));
dp[0][0] = tree[0][0];
for i in 1..n {
dp[i as usize][0] = get_max(dp[(i - 1) as usize][0], tree[i as usize][0]);
}
for j in 1..m {
dp[0][j as usize] = dp[0][(j - 1) as usize] + tree[0][1];
}
for i in 1..n {
for j in 1..m {
dp[i as usize][j as usize] = get_max(
dp[(i - 1) as usize][j as usize],
dp[(i - 1) as usize][(j - 1) as usize]
+ tree[i as usize][0]
+ tree[i as usize][1] * j,
);
}
}
return dp[(n - 1) as usize][(m - 1) as usize];
}
}
fn get_max<T: Clone + Copy + std::cmp::PartialOrd>(a: T, b: T) -> T {
if a > b {
a
} else {
b
}
}
执行结果如下:

2022-12-08:给定n棵树,和两个长度为n的数组a和b i号棵树的初始重量为a[i],i号树每天的增长重量为b[i] 你每天最多能砍1棵树,这天收益 = 砍的树初始重量 + 砍的树增长到这天的总的更多相关文章
- 2021.12.08 P1848 [USACO12OPEN]Bookshelf G(线段树优化DP)
2021.12.08 P1848 [USACO12OPEN]Bookshelf G(线段树优化DP) https://www.luogu.com.cn/problem/P1848 题意: 当农夫约翰闲 ...
- 2021.12.08 平衡树——FHQ Treap
2021.12.08 平衡树--FHQ Treap http://www.yhzq-blog.cc/fhqtreapzongjie/ https://www.cnblogs.com/zwfymqz/p ...
- 2018.12.08【NOIP提高组】模拟B组总结(未完成)
2018.12.08[NOIP提高组]模拟B组总结 diyiti 保留道路 进化序列 B diyiti Description 给定n 根直的木棍,要从中选出6 根木棍,满足:能用这6 根木棍拼出一个 ...
- 2021.12.08 [SHOI2009]会场预约(平衡树游码表)
2021.12.08 [SHOI2009]会场预约(平衡树游码表) https://www.luogu.com.cn/problem/P2161 题意: 你需要维护一个 在数轴上的线段 的集合 \(S ...
- PyTables 教程(一)入门,浏览对象树,将数据提交到表和数组
翻译自http://www.pytables.org/usersguide/tutorials.html 教程 Seràs la clau que obre tots els panys, seràs ...
- 12个高矮不同的人,排成两排(catalan数)
问题描述: 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 这个笔试题,很YD,因为把某个递归关系隐藏得很深. 问题分析: 我们先把这12个 ...
- php 数据集转换树、递归重组节点信息多维数组(转)
一.将数据集转换成树 /** * 将返回的数据集转换成树 * @param array $list 数据集 * @param string $pk 主键 * @param string $pid 父节 ...
- CodeForces Round #179 (295A) - Greg and Array 一个线段树做两次用
线段树的区间更新与区间求和...一颗这样的线段树用两次... 先扫描1~k...用线段树统计出每个操作执行的次数... 那么每个操作就变成了 op. l , op.r , op.c= times* ...
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...
- 给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合
给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合 ruby代码: def all_possible_arr arr, length = 5 ret = [] leng ...
随机推荐
- Caused by: java.lang.ClassNotFoundException: Class org.openx.data.jsonserde.JsonSerDe not found
Caused by: java.lang.ClassNotFoundException: Class org.openx.data.jsonserde.JsonSerDe not found 解决方法 ...
- python:m3u8转mp4
import re,requests,time,os import threadpool res = requests.get(url="http://pili-vod.tebaobao.v ...
- C++ accumulate()函数的用法
accumulate定义在 numeric 中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理. 头文件 #include <numeric> 原型 默认求累加和 templat ...
- 一个小数据库SQLite
参考 https://blog.csdn.net/csdnhsh/article/details/93376733 https://www.runoob.com/sqlite/sqlite-creat ...
- windows下创建虚拟环境
创建虚拟环境依赖以下两个模块 virtualenv 和virtualenvwrapper-win 1.下载 2.修改环境变量,增加一条 WORKON_HOME:路径 3. 同步配置 去向Pytho ...
- group by和union,Laravel分页
$res3 = DB::table('users') ->join('user_folow_boutiques', 'user_folow_boutiques.user_id', '=', 'u ...
- 【读书笔记】组合计数-Tilings-正文 学一半的笔记
Tilings-正文部分 目录 9.2 转移函数方法 例子 补充 9.3 其余的方法 9.3.1 the path method 9.3.2 The permanent-determinant and ...
- Java面试——数据库
一.数据库隔离级别 [1]Read Uncommitted(读取未提交内容):出现脏读,也就是可能读取到其他会话中未提交事务修改的数据.[2]Read Committed(读取已提交内容):不可重复读 ...
- 算法学习笔记(20): AC自动机
AC自动机 前置知识: 字典树:可以参考我的另一篇文章 算法学习笔记(15): Trie(字典树) KMP:可以参考 KMP - Ricky2007,但是不理解KMP算法并不会对这个算法的理解产生影响 ...
- 一次Feign使用的案例
项目名称 projectName Maven架构 l ProjectName-项目名称,项目父工程 projectName-api-提供给外部组件使用的接口 common-一些基本共用的类.枚举常量 ...