送花-ACM算法题

<span style="white-space:pre">	</span>萌妹纸一般都比较喜欢漂亮的鲜花。每逢各种节日,她们都想收到鲜花作为礼物。如果你是有妹纸滴人,经常不送妹纸花的话,结果可想而知了。
当然咯,妹纸都是通情达理的,不会因为某几次你木有送花,就发你好人卡了。王童鞋作为一个比较节俭(抠门)的人便知道这一道理,因此他想在妹纸不给他发好人卡的前提下,送尽量少的花。
为了简单起见,我们定义一个妹纸的幸福指数H(初始为0 )。如果某天幸福指数H小于0,那就。。。
如果某天妹纸收到了花,幸福指数H会增加ai,如果没收到,会下降bi。不同的日子送花对幸福指数的增加可能会有所不同,比如在2月14号送花就会比2月15号效果好~
即告诉你总天数n(1<=n<=365),每天收到花幸福指数的增加值ai(1<=ai<=10),没收到花幸福指数的降低值bi,求为了让妹纸的幸福指数H一直>=0,王童鞋至少要送妹纸多少朵花。


输入
第一行为一个正整数T,表示有T组数据。
每组数据第一行有1个整数: n表示总天数1<=n<=365。
第二行为n个整数ai表示第i天收到花幸福指数的增加值,1<=ai<=10。第三行为n个整数bi表示第i天没收到花幸福指数的下降值,1<=bi<=10。

输出
一个整数表示最少需要送多少朵花。

样例输入
2
1
3
4
5
5 2 10 1 1
1 1 1 5 5

样例输出
1
2

附上代码:

#include<iostream>
using namespace std;
#include<vector>
int find(int start,int end,int *t)
{
	int index = start;
	int Max = t[start];
	for(int i=start+1;i<=end;i++)
		if(t[i]>Max)
		{
			Max = t[end];
			index = i;
		}
		return index;
}
int main()
{
	int nowIndex=0;
	int n;
	int *a,*b,*s;
	int H = 0;
	cin>>n;
	s = new int[n];
	for(int i=0;i<n;i++)
		s[i]=0;
	for(int i=0;i<n;i++)
	{
		H = 0;
		int day;
		cin>>day;
		a = new int[day];
		b = new int[day];
		for(int j=0;j<day;j++)
			cin>>a[j];
		for(int k=0;k<day;k++)
			cin>>b[k];
		H = H=a[0];
		nowIndex = 0;
		s[i]++;
		for(int p=1;p<day;p++)
		{
			if(H-b[p]<0)
			{
				
				s[i]++;
				H = H+a[find(nowIndex+1,p,a)];
				nowIndex = p;
			}else
				H =H- b[p];
		}

	}
	for(int i=0;i<n;i++)
		cout<<s[i]<<endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值