码迷,mamicode.com
首页 > 其他好文 > 详细

NOJ 网络赛 L题 送花

时间:2015-03-30 18:55:37      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

题目:

送花

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 116            测试通过 : 41 

题目描述

萌妹纸一般都比较喜欢漂亮的鲜花。每逢各种节日,她们都想收到鲜花作为礼物。如果你是有妹纸滴人,经常不送妹纸花的话,结果可想而知了。

当然咯,妹纸都是通情达理的,不会因为某几次你木有送花,就发你好人卡了。王童鞋作为一个比较节俭(抠门)的人便知道这一道理,因此他想在妹纸不给他发好人卡的前提下,送尽量少的花。

为了简单起见,我们定义一个妹纸的幸福指数H(初始为)。如果某天幸福指数H小于0,那就。。。

如果某天妹纸收到了花,幸福指数H会增加ai,如果没收到,会下降bi。不同的日子送花对幸福指数的增加可能会有所不同,比如在214号送花就会比215号效果好~

即告诉你总天数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

题目来源

NUPT


题目分析:

                贪心。先根据增加值进行贪心(从大到小排序)。然后枚举每一种情况即可。以下代码能够AC,但我不知道是否正确理解了出题人的意思,以下代码仅供参考。


代码如下:

/*
 * l.cpp
 *
 *  Created on: 2015年3月29日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 366;


struct Flower{
	int up;
	int down;
}flowers[maxn];

bool cmp(Flower a,Flower b){
	return a.up > b.up;
}

int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		int n;
		scanf("%d",&n);

		int i;
		for(i = 0 ; i < n ; ++i){
			scanf("%d",&flowers[i].up);
		}

		for(i = 0 ; i < n ; ++i){
			scanf("%d",&flowers[i].down);
		}

		sort(flowers,flowers+n,cmp);

		int j;
		int cnt;
		int ans;
		for(i = 0 ; i < maxn ; ++i){
			cnt = 0;
			ans = 0;
			for(j = 0 ; j <= i ; ++j){
//				cnt = (i-j+1);

				ans += flowers[j].up;
			}


			for(j = i+1 ; j < n ; ++j){
				ans -= flowers[j].down;
				if(ans < 0){
					break;
				}
			}

			if((j >= n-1) && ans >= 0 ){
				break;
			}
		}

		printf("%d\n",i+1);

	}

	return 0;
}






NOJ 网络赛 L题 送花

标签:

原文地址:http://blog.csdn.net/hjd_love_zzt/article/details/44752669

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!