动态规划——带权活动选择

news/2024/5/20 20:52:34
带权活动选择
Time Limit: 3000 MSMemory Limit: 1000 KB

Description

给定n个活动,活动ai表示为一个三元组(si,fi,vi),其中si表示活动开始时间,fi表示活动的结束时间,vi表示活动的权重,
si<fi。带权活动选择问题是选择一些活动,使得任意被选择的两个活动ai和aj执行时间互不相交,即区间[si,fi)与[sj,fj)
互不重叠,并且被选择的活动的权重和最大。请设计一种方法求解带权活动选择问题。

Input

第一行输入M(M<=10)表示有M组数据。每组数据输入整数N(N<=10000), 接下来输入N个活动。

Output

输出M行正整数,第i行表示第i组数据的能够选择活动最大权值和。

Sample Input

2
5
7 9 9
7 8 1
6 7 9
6 8 5
4 9 9
5
4 7 9
3 4 4
7 8 8
8 9 6
4 5 9

Sample Output

18
27

二、解题思路

先将活动按照结束时间进行排序,

三、代码示例

注意这里使用了sort函数进行排序,sort

#include <iostream>
#include <algorithm> 
using namespace std;struct Activity {
int s, e, v;
};bool cmp(Activity a, Activity b) { return a.e < b.e;
}int main() {int m, n;cin >> m;while (m--) {cin >> n;int dp[10001] = { 0 };Activity activities[10001];for (int i = 1; i <= n; i++) {cin >> activities[i].s;cin >> activities[i].e;cin >> activities[i].v;}dp[0] = 0;activities[0].s = activities[0].e = activities[0].v = 0;sort(activities + 1, activities + n + 1, cmp);for (int i = 1; i <= n; i++) {for (int j = i - 1; j >= 0; j--) {//从前一个开始依次向前找结束时间在它开始时间之前的if (activities[j].e <= activities[i].s) {dp[i] = max(dp[i - 1], dp[j] + activities[i].v);break;}}}cout << dp[n] << endl;}return 0;
}


http://wed.xjx100/news/198272.html

相关文章

有意思的各类算法,思维题目分享

1.统计子矩阵 思路&#xff1a;二维前缀和超时&#xff0c;下面是前缀和加双指针&#xff0c;对列前缀和&#xff0c;两个玄幻控制行号&#xff0c;双指针控制列的移动 考查&#xff1a;前缀和双指针 import os import sys# 请在此输入您的代码 # 矩阵大小 N M n,m,kmap(int,…

用 CSS 自定义滚动条

简介 首先需要介绍一下滚动条的组成部分。滚动条包含 track 和 thumb&#xff0c;如下图所示&#xff1a; track是滚动条的基础&#xff0c;其中的 thumb是用户拖动支页面或章节内的滚动。 案例&#xff1a; 案例代码&#xff1a; <!DOCTYPE html> <html><he…

【C++】-模板初阶(函数和类模板)

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言一、为什么要模板&…

MindMaster思维导图及亿图图示会员 优惠活动

MindMaster思维导图及亿图图示会员 超值获取途径 会员九折优惠方法分享给大家&#xff01;如果有需要&#xff0c;可以上~ 以下是食用方法&#xff1a; MindMaster 截图 亿图图示 截图 如果需要MindMaster思维导图或者亿图图示会员&#xff0c;可按照如下操作领取超值折扣优惠…

VP记录:Codeforces Round 873 (Div. 2) A~D1

传送门:CF 前题提要:因为本场比赛的D题让我十分难受.刚开始以为 r − l 1 r-l1 r−l1与 r − l r-l r−l应该没什么不同.但是做的时候发现假设是 r − l 1 r-l1 r−l1的话我们可以使用线段树来维护,但是 r − l r-l r−l就让线段树维护的难度大大增加,这导致我十分烦躁,所以…

Python 框架学习 Django篇 (一) 安装及基本使用

环境说明 python 3.11.3 Django 4.2.1 idea 2023.1 一、安装调试 我这里默认idea和python环境都是装好的&#xff0c;直接从建项目开始 新建项目 项目名称: demo 安装Django //配置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simp…

【计算机网络基础】章节测试2 物理层

文章目录 判断题选择题辨析题应用题 判断题 现在的无线局域网常用的频段是2.8GHz和5.4GHz。 多模光纤只适合于近距离传输。√ 数据在计算机内部多采用串行传输方式&#xff0c;但在通信线路上多采用并行传输方式。 统计时分复用可以按需动态分配时隙。√ 相对于同步时分复用…

Spring事务与事务传播机制

文章目录 为什么需要事务&#xff1f;回顾MySQL中事务的使用Spring中事务的实现编程式事务声明式事务声明式事务失效场景 Spring中事务的隔离级别Spring事务的传播机制 为什么需要事务&#xff1f; 事务是将一组操作封装成一个执行单元&#xff0c;该组操作要么全部执行成功&a…