Best Financing

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 148    Accepted Submission(s): 35

Problem Description
小A想通过合理投资银行理財产品达到收益最大化。已知小A在未来一段时间中的收入情况,描写叙述为两个长度为n的整数数组dates和earnings,表示在第dates[i]天小A收入earnings[i]元(0<=i<n)。银行推出的理財产品均为周期和收益确定的,可描写叙述为长度为m的三个整数数组start、finish和interest_rates, 若购买理財产品i(0<=i<m),须要在第start[i]天投入本金,在第finish[i]天可取回本金和收益,在这期间本金和收益都无法取回,收益为本金*interest_rates[i]/100.0。当天取得的收入或理財产品到期取回的本金当天就可以购买理財产品(注意:不考虑复利,即购买理財产品获得的收益不能用于购买兴许的理財产品)。假定闲置的钱没有其它收益,如活期收益等,全部收益仅仅能通过购买这些理財产品获得。求小A能够获得的最大收益。



限制条件:

1<=n<=2500

1<=m<=2500

对于随意i(0<=i<n),1<=dates[i]<=100000,1<=earnings[i]<=100000, dates中无反复元素。

对于随意i(0<=i<m),1<=start[i]<finish[i]<=100000, 1<=interest_rates[i]<=100。
 
Input
第一行为T (T<=200),表示输入数据组数。

每组数据格式例如以下:

第一行是n m

之后连续n行,每行为两个以空格分隔的整数,依次为date和earning

之后连续m行,每行为三个以空格分隔的整数,依次为start, finish和interest_rate
 
Output
对第i组数据,i从1開始计,输出

Case #i:

收益数值,保留小数点后两位,四舍五入。
 
Sample Input
2
1 2
1 10000
1 100 5
50 200 10
2 2
1 10000
5 20000
1 5 6
5 9 7
 
Sample Output
Case #1:
1000.00
Case #2:
2700.00
 
Source
 
Recommend
liuyiding   |   We have carefully selected several similar problems for you:  4831 4830 4829 4828 4827 
 

思路:

将起点终点离散化,之后用起点做DP

/*************************************************************************
> File Name: hdu-4833-Best-Financing.cpp
> Author: nealgavin
> Mail: nealgavin@126.com
> Created Time: Mon 26 May 2014 07:28:57 PM CST
************************************************************************/ #include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
const int mm = 5009;
const int nn = 100003;
class Income{
public:
int date;
int earning;
}salry[mm]; class Contral{
public:
int start;
int finish;
int interest_rates;
}earn[mm]; int T,n,m;
int f[nn],day_in[nn],all_in[nn];
int dp[mm];
map<int,int>mp;
vector<int>vc[2][mm]; int main()
{
while(~scanf("%d",&T))
{
for(int ca=1;ca<=T;++ca)
{
scanf("%d %d",&n,&m);
memset(day_in,0,sizeof(day_in));
memset(all_in,0,sizeof(all_in));
for(int i=0;i<n;++i)
{
scanf("%d %d",&salry[i].date,&salry[i].earning);
all_in[ salry[i].date ] += salry[i].earning;
}
for(int i=1;i<nn;++i)
all_in[i] += all_in[i-1];
for(int i=0;i<m;++i)
scanf("%d %d %d",&earn[i].start,&earn[i].finish,&earn[i].interest_rates);
for(int i=0;i<m;++i)
for(int i=0;i<m;++i)
{
f[i] = earn[i].start;
f[i+m] = earn[i].finish;
}
sort(f,f+m+m);
int pos = unique(f,f+m+m)-f;
mp.clear();
for(int i=0;i<pos;++i)
mp[ f[i] ] = i;
day_in[ 0 ] = all_in[ f[0] ];
for(int i=1;i<pos;++i)
day_in[ i ] = all_in[ f[i] ] - all_in[ f[i-1] ]; for(int i=0;i<2;++i)
for(int j=0;j<pos;++j)
vc[i][j].clear(); for(int i=0;i<m;++i)
{
earn[i].start = mp[ earn[i].start ];
earn[i].finish = mp[ earn[i].finish ];
vc[0][ earn[i].start ].push_back(earn[i].finish);
vc[1][ earn[i].start ].push_back(earn[i].interest_rates);
}
memset(dp,0,sizeof(dp));
for(int i=pos-1;i>=0;--i)
{
dp[i] = dp[i+1];
int sz = vc[0][i].size();
for(int j=0;j<sz;++j)
{
dp[i] = max(dp[i],dp[ vc[0][i][j] ]+vc[1][i][j]);
// cerr<<"in"<<i<<" "<<dp[i]<<" "<<vc[0][i][j]<<" "<<vc[1][i][j]<<endl;
}
}
long long ans = 0;
for(int i=0;i<pos;++i)
ans += (long long)dp[i]*day_in[i];
printf("Case #%d:\n",ca);
printf("%.2f\n",(double)ans/100);
}
}
return 0;
}

hdu-4833-Best-Financing(DP)的更多相关文章

  1. HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))

    Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...

  2. HDU 4833 Best Financing (DP)

    Best Financing Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. HDU 5791:Two(DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description   Alice gets two sequences A ...

  4. hdu4833 Best Financing(DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4833 这道题目关键的思想是从后往前dp,dp[i]表示在第i处投资xi能获得的最大收益,其中xi表示从 ...

  5. HDU 1422 重温世界杯(DP)

    点我看题目 题意 : 中文题不详述. 思路 : 根据题目描述及样例可以看出来,如果你第一个城市选的是生活费减花费大于等于0的时候才可以,最好是多余的,这样接下来的就算是花超了(一定限度内的花超),也可 ...

  6. HDU 1176 免费馅饼(DP)

    点我看题目 题意 : 中文题.在直线上接馅饼,能接的最多是多少. 思路 :这个题其实以前做过.....你将这个接馅饼看成一个矩阵,也不能说是一个矩阵,反正就是一个行列俱全的形状,然后秒当行,坐标当列, ...

  7. hdu 4055 Number String(dp)

    Problem Description The signature of a permutation is a string that is computed as follows: for each ...

  8. 【HDU - 4345 】Permutation(DP)

    BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...

  9. HDU 5375 Gray code(DP)

    题意:给一串字符串,里面可能出现0,1,?,当中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时.加上该位权值,求最大权值和为多少. 分析:比赛的时候愚了.竟然以 ...

  10. hdu 1158 Employment Planning(DP)

    题意: 有一个工程需要N个月才能完成.(n<=12) 给出雇佣一个工人的费用.每个工人每个月的工资.解雇一个工人的费用. 然后给出N个月所需的最少工人人数. 问完成这个项目最少需要花多少钱. 思 ...

随机推荐

  1. delphi与汇编

    我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类.全部API以及嵌入的汇编.最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式 ...

  2. 初探eXtreme scale

    Note: This document was based on WebSphere Extreme Scale 8.6. It doesn’t supported for lower version ...

  3. JavaScript编程:javaScript核心基础语法

    1.javaScript核心基础语法: javaScript技术体系包含了5个内容:          1.核心语言定义:          2.原生对象和雷子对象:          3.浏览器对象 ...

  4. 一百多道.NET面试题!

    1.a=10,b=15,在不用第三方变量的前提下,把a,b的值互换 方法一: a=a+b;  b=a-b;  a=a-b;  方法二: a^=b^(b^=a^b);  2.已知数组int[] max= ...

  5. webdynpro MESSGAE

    1.  添加辅助类CL_WDR_DEMO_MESSAGES 环境,设计的控件有:输入控件,按钮,每个按钮对应一个事件.分别是下面,然后报消息 TEXT: SUCCESS: method ONACTIO ...

  6. VC++2005、VC2008中Release版本设置为可调试的设置方法

    一.很多时候需要在Release版本下调试程序,可以使用以下方法设置: 1.无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息 ...

  7. 解决 Android SDK Manager不能下载旧版本的sdk的问题

    解决无法使用Android SDK  Manager下载SDK开发包的解决办法. 当我们在官网下载google的集成ADT,也就是adt-bundle-linux-x86.zip开发包,进行解压, 打 ...

  8. 临界段CCriticalSection的使用

    类CCriticalSection的对象表示一个“临界区”,它是一个用于同步的对象,同一时刻仅仅同意一个线程存取资源或代码区.临界区在控制一次仅仅有一个线程改动数据或其他的控制资源时很实用.比如,在链 ...

  9. php中include文件变量作用域的研究

    原文:php中include文件变量作用域的研究 在php中我们有时候需要include一个文件.比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件 ...

  10. 窗体透明,但窗体上的控件不透明(简单好用)good

    1.在Delphi中,设置窗体的AlphaBlend := true;AlphaBlendValue := 0-255; AlphaBlendValue越小窗体的透明度就越高.这种方法将会使窗体和窗体 ...