
FatMouse‘s Speed
问题分析:我们需要找到一个最长的子序列,使得体重递增且速度递减。这个问题类似于寻找最长递增子序列(LIS),但这里还需要满足速度递减的条件。 数据结构:使用一个结构体来记录每个猫的体重、速度和序号。 排序:按照速度从高到低排序,这样在处理每个猫时,后面的猫速度会低于前面的猫。 动态规划:使用动态规划数组 状态转移:对于每个猫,检查所有前面的猫,满足速度和体重条件的情况下,更新 结果记录:记录全局最长子序列的长度和对应的猫的序号。 结构体定义: 比较函数:用于排序猫的速度和体重,确保速度递减且体重递增。 输入处理:读取输入数据并存储到 排序:按照速度和体重对 动态规划初始化: 双重循环处理:从后往前处理每个猫,检查前面所有满足条件的猫,更新 结果记录和输出:记录最长子序列的长度和对应的猫的原始序号,最后输出结果。
发布日期:2021-05-08 16:30:18
浏览次数:20
分类:精选文章
本文共 1718 字,大约阅读时间需要 5 分钟。
为了解决这个问题,我们需要找到猫的体重和速度的最长子序列,其中体重是递增的,而速度是严格递减的。以下是详细的解决方案:
方法思路
dp
,其中 dp[i]
表示以第 i
个猫结尾的最长子序列的长度。dp[i]
。解决代码
#include#include using namespace std;struct Cat { int weight; int speed; int original_id;};bool compare(const Cat& a, const Cat& b) { if (a.speed != b.speed) { return a.speed > b.speed; } return a.weight < b.weight;}int main() { int n; vector cats; while (cin >> n) { cats.push_back({n, n, n}); } sort(cats.begin(), cats.end(), compare); vector dp(n + 1, 0); int max_len = 0; vector result_ids; for (int i = n; i >= 1; --i) { for (int j = i - 1; j >= 1; --j) { if (cats[j].speed > cats[i].speed && cats[j].weight < cats[i].weight) { if (dp[j] + 1 > dp[i]) { dp[i] = dp[j] + 1; if (dp[i] > max_len) { max_len = dp[i]; result_ids = vector (dp[i], 0); for (int k = dp[i]-1; k >=0; --k) { result_ids[k] = cats[i].original_id - (i - k); } } } } } } cout << max_len << endl; for (int id : result_ids) { cout << id << " "; } cout << endl; return 0;}
代码解释
Cat
结构体存储每个猫的体重、速度和原有的序号。cats
向量中。cats
进行排序。dp
数组用于记录每个位置的最长子序列长度。dp
数组。这种方法确保了我们能够找到满足条件的最长子序列,并且代码结构清晰,逻辑严密。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月16日 21时42分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mssql 字增自段怎样重置(重新自增)|清空表已有数据
2025-04-14
mongodb导出csv json
2025-04-14
mongodb工具类
2025-04-14
MongoDB常见面试题总结(上)
2025-04-14
MongoDB开发规范与数据建模
2025-04-14
MongoDB快速入门
2025-04-14
MongoDB快速插入1000w测试数据(Java)
2025-04-14
MongoDB性能调优
2025-04-14
MongoDB插入数据的3种方法
2025-04-14
mongoDB教程(一):数据库简介
2025-04-14
mongoDB教程(七):集合的操作
2025-04-14
mongoDB教程(三):服务开启关闭
2025-04-14
mongoDB教程(八):管理账户
2025-04-14
mongoDB教程(十一):文档的操作
2025-04-14
mongoDB教程(十三):索引
2025-04-14
mongoDB教程(十二):分页操作
2025-04-14
mongoDB教程(十):导入、导出
2025-04-14
mongoDB教程(四):用户角色
2025-04-14
MongoDB数据库/集合/文档基本操作
2025-04-14