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

rqnoj 是时候说了

时间:2014-11-15 18:24:49      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   for   strong   div   

题目描述

你已经忍耐太久了。现在是时候把你对大家的看法说出来了。

假设你对n个人说出自己的看法,在和第i个人说完后,你的健康指数将减少lostHealth[i],而你的快乐指数将增加gainJoy[i]。你可以和每一个人最多说一次,并且你不必按照特定顺序进行。

你的目标是得到尽可能多的快乐。最初的时候,你的健康指数为100,而快乐指数为0。如果你的健康指数为0或负数,即使你得到再多快乐,你也只会痛苦地死去。

现在编写程序请你计算出你可以得到的最大快乐指数。

输入格式

输入共3行。

第1行,1个正整数n,表示有n个人。(1<=n<=20)

第2行,n个整数,第i个整数表示你对第i个人说话会失去的健康指数lostHealth[i]。(0<=lostHealth[i]<=100)

第3行,n个整数,第i个整数表示你对第i个人说话会得到的快乐指数gainJoy[i]。(0<= gainJoy[i]<=100)

输出格式

输出共1行,1个整数,表示你可以得到的最大快乐指数。

样例输入
样例输出
 
提交题目 bubuko.com,布布扣 Error [ 更改语言 ] Language
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
int n,f[10010],losthealth[10010],gainhappy[10010];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&losthealth[i]);
    for(int j=1;j<=n;j++)
    scanf("%d",&gainhappy[j]);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=100-losthealth[i];j++)
        if(f[j]<f[j+losthealth[i]]+gainhappy[i])
        f[j]=f[j+losthealth[i]]+gainhappy[i];
    }
    int ans=-1;
    for(int i=0;i<=100;i++)
    if(f[i]>ans)
    ans=f[i];
    printf("%d\n",ans);
    return 0;
}

  

rqnoj 是时候说了

标签:blog   http   io   ar   os   sp   for   strong   div   

原文地址:http://www.cnblogs.com/a972290869/p/4099724.html

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