Algorithm --> 投资组和求最大利润
投资组和求最大利润
题目:
投资人出资一笔费用mount,投资给不同的公司(A,B,C....),求最大获取利润?
例如:投资400百万,给出两家公司A和B:
1.如果投资一百万给A公司,投资3百万给B工资,则获取14百万(5百万+9百万);
2.如果都投资给B公司,则获取15百万,所以应该投资给B公司;
故选择全部投给B公司。
Invested Amount(Unit: KRW 100 million won) |
Company A |
Company B |
条件:
1、给出投资额mount,以及公司个数comp
2、投给同一家公司的金额不能拆分,比如,有4百万投资额,投给A公司1百万和3百万(不允许)
代码:
/*
思路分析:
1,01背包问题,最早尝试把所有的点转换为 (公司数*投资数)个物品,进行简单的二重循环的背包问题,但是题意有说明,同一家
公司的投资不能分开,也就是这些物品之间有了排斥关系;
2,转换思路为,F[N][V]代表在前N家公司投资的总利益,应为投给了第N家和没有投给第N家两种情况的最大值;
F[N][V] = MAX{F[N-1][V], F[N-1][?]+?};
关键是这里投给第N家公司的最大利益需要一一遍历它的所有可能的投资数,然后得到max值,再代入上式进行比较即可。 int max = -1;
for(int k = 1; k <= Mount; k++)
if(j - k >= 0)
max = MAX(max, dp[j-k] + invest[k][i]);
*/ #include <cstdio>
#include <iostream>
#include <cstring> using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b)) int invest[][];
int Mount, Comp;
int dp[]; int main(int argc, char** argv)
{
int tc, T; //freopen("input_businessinvestment.txt", "r", stdin); cin >> T;
for(tc = ; tc < T; tc++)
{
cin >> Mount >> Comp; memset(dp, , sizeof(dp)); for(int i = ; i <= Mount; i++)
for(int j = ; j <= Comp; j++)
cin >> invest[i][j]; for(int i = ; i <= Comp; i++)
for(int j = Mount; j >= ; j--) {
int max = -;
for(int k = ; k <= Mount; k++)
if(j - k >= )
max = MAX(max, dp[j-k] + invest[k][i]);
dp[j] = MAX(max, dp[j]);
} cout << dp[Mount] << endl;
} return ;
}
输入文件:
Algorithm --> 投资组和求最大利润的更多相关文章
- [NOIP2013 普及组] 表达式求值
[NOIP2013 普及组] 表达式求值 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. Input 一行,为需要你计算的表达式,表达式中只包含数字.加法运算符"+" ...
- Just Oj 2017C语言程序设计竞赛高级组A: 求近似值(矩阵快速幂)
A: 求近似值 时间限制: 1 s 内存限制: 128 MB 提交 我的状态 题目描述 求⌊(5–√+6–√)2n⌋⌊(5+6)2n⌋%9932017. 例如:n=1,(5–√+6–√)2( ...
- Manacher's Algorithm 马拉车算法(求最长回文串)
作用:求一个字符串中的最长子串,同时还可以求所有子串的长度. 题目链接: https://vjudge.net/contest/254692#problem/B 最长回文串长度的代码: int Man ...
- SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1
5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...
- [java面试]javascript中dom取值问题radio名字一样归属于同一个组,求点击的是哪一个
题目描述: 看如下的html文件,里面定义了一些radio类型的元素,请完成parse()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框. </pre><pre code ...
- N元数组的子数组之和的最大值
题目:有N个整数的元素的一维数组,求子数组中元素之和中最大的一组(思想:动态规划) 分析: 设该数组为array[N], 那么对于array[i]该不该在元素之和最大的那个子数组中呢?首先,不如假设a ...
- N 组连续子串最大和
数组 a 中有 M 个数 , 将 M 个数分成 N 组 , 并且每组中的数据顺序和原数组中的顺序保持一致,求 N 组中的数据之和最大为多少? 向 dp 数组中赋初始值 ,如果 M == N ,则 dp ...
- 字符串的最长回文串:Manacher’s Algorithm
题目链接:Longest Palindromic Substring 1. 问题描述 Given a string S, find the longest palindromic substring ...
- 2017年第八届蓝桥杯【C++省赛B组】
1.标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有 ...
随机推荐
- CWnd *和HWnd转换
CWnd *和HWnd转换 CWnd*得到HWnd CWnd wnd; HWND hWnd; hWnd = wnd.m_hWnd; // or ...
- HI3531例子程序说明
Hisilicon Hi35xx 样例程序使用说明 1. 样例程序文件结构说明 sample # MPP 样例程序 |-- common # hi35x ...
- Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- 1118: 属于 static 类型 Object 的值的隐式强制指令的目标可能是非相关类型 Number。
1.错误描述 此行的多个标记: -1118: 属于 static 类型 Object 的值的隐式强制指令的目标可能是非相关类型 Number. -left 2.错误原因 /** * 刷新按钮函数 */ ...
- 【原】eclipse创建maven工程时,如何修改默认JDK版本?
问题描述:eclipse建立maven项目时,JDK版本默认是1.5,想创建时默认版本设置为1.8,如何修改? 解决方案: 找到本机maven仓库存放位置,比如:${user.home}/.m2/路径 ...
- C# MVC的一种高效分页的html方法
首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用: //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ...
- shiro的登陆认证(shiro项目中来的一)
一,图解 二,流程 2.1,创建token令牌,token中有用户提交的认证信息即账号和密码 Subject subject = SecurityUtils.getSubject(); Usernam ...
- idea-全局默认maven配置
在项目实战中我们依赖的开发IDE可谓是我们的饭碗,怎么高效优化使用IDE将极大提高我们开发的效率,这里通过一些人性化的设置让我们更加舒适的开发,默认IntelliJ IDEA 是有一套自己的IDE整体 ...
- SQL Server 扩展事件
SQL Server 扩展事件(Extended Event)是用于服务器的常规事件处理系统,是追踪SQL Server系统运行状态的神器,同时也是一个日志记录工具,扩展事件完全可以取代SQL追踪(S ...
- link-cut-tree 简单介绍
link-cut-tree 简单介绍 前言:这个算法似乎机房全都会,就我不会了TAT...强行搞了很久,勉强照着别人代码抄了一遍qwq 这个本人看论文实在看不懂,太菜了啊!!! 只好直接看如何实现.. ...