首页 > 代码库 > rqnoj 是时候说了
rqnoj 是时候说了
题目描述
你已经忍耐太久了。现在是时候把你对大家的看法说出来了。
假设你对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个整数,表示你可以得到的最大快乐指数。
样例输入
样例输出
提交题目 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 是时候说了
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。