HDOJ 题目4833 Best Financing(DP)

本文深入探讨了深度学习技术在音视频处理、AR特效、AI音视频处理等多个领域的应用,包括图像处理、音视频直播流媒体、图像处理AR特效、AI音视频处理等,展示了深度学习如何提升音视频质量、实现高效处理和个性化体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Best Financing

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 496    Accepted Submission(s): 155


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:   5245  5244  5243  5242  5241 
 
ac代码
#include<stdio.h>
#include<string.h>
#define max(a,b) (a>b?a:b)
int val[100010],head[100010],cnt;
struct s
{
	int u,v,w,next;
}edge[100010];
void add(int u,int v,int w)
{
	edge[cnt].u=u;
	edge[cnt].v=v;
	edge[cnt].w=w;
	edge[cnt].next=head[u];
	head[u]=cnt++;
}
double dp[100010];
int main()
{
	int n,m;
	int t,cot=0;
	scanf("%d",&t);
	while(t--)
	{
		memset(head,-1,sizeof(head));
		memset(val,0,sizeof(val));
		cnt=0;
		int i,j;
		scanf("%d%d",&n,&m);
		for(i=0;i<n;i++)
		{
			int d,e;
			scanf("%d%d",&d,&e);
			val[d]+=e;
		}
		for(i=0;i<m;i++)
		{
			int a,b,c;
			scanf("%d%d%d",&a,&b,&c);
			add(a,b,c);
		}
		memset(dp,0,sizeof(dp));
		double ans=0;
		printf("Case #%d:\n",++cot);
		for(i=100000;i>0;i--)
		{
			dp[i]=dp[i+1];
			for(j=head[i];j!=-1;j=edge[j].next)
			{
				dp[i]=max(dp[i],dp[edge[j].v]+edge[j].w);
	//			printf("%lf %d %d\n",dp[i],i,val[i]);
			}
			ans+=dp[i]*val[i];
		}
		printf("%.2lf\n",ans/100);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值