【哈尔滨理工大学第七届程序设计竞赛决赛】 C 小明打联盟【DP +背包】

来源:互联网 发布:java语言培训班哪个好 编辑:程序博客网 时间:2024/05/31 19:07

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小明很喜欢打游戏,现在已知一个新英雄即将推出,他同样拥有四个技能,其中三个小技能的释放时间和固定的伤害值为:
1.乌鸦坐飞机 释放时间:x 固定伤害值:a
2.蜘蛛吃耳屎 释放时间:y 固定伤害值:b
3.饿狼前进 释放时间:z 固定伤害值:c

他还有一个大招,其释放的时间是一个区间【L,R】,可以在区间内任意时间点释放出技能,其如果在L+i时刻释放技能,其能够打出的伤害值为:temp+A*i
这里temp值表示技能的基础伤害(同时也就是在时刻L释放技能的伤害值),A是一个常数。

小明很喜欢研究连招使得在有限的时间内打出最高的伤害,现在他想要在T长度单位时间内打出最高的伤害,问这个最大伤害值。
输入描述:
本题包含多组数据。
输入格式为:
T
x a
y b
z c
L R temp A
数据范围:
1<=T<=1e5
1<=x,y,z,L,R<=T
L<=R
<=a,b,c,temp,A<=1e5
输出描述:
输出包含一行,输出能够打出的最高伤害值。
示例1
输入

8
3 1
2 3
1 3
3 3 3 3
输出

24
备注:
大招:蓄力时间最短L秒,最多R秒。无限次释放,释放之后照成的伤害是随着时间增加的
蓄力L秒释放能够造成Temp的伤害
蓄力L+1秒释放能够造成Temp+1*A的伤害
依次类推

分析: 前三种物品很好处理,背包搞一下就行了。关键就是那个区间的伤害怎么处理。首先明白,它其实也是一个离散的量,所以我们可以先预处理出来 在第i秒的时候,只通过大招可以达到的最大伤害。然后再在那个基础上跑一个背包在更新一下最大值。
代码

#include<bits/stdc++.h>using namespace std;#define LL long longconst int MAXN = 1e5 +11;const int MAXM = 1e6 ;const int inf  = 0x3f3f3f3f;const int mod = 1e9+7 ;LL dp[MAXN] ;int main(){    int T;    while(cin>>T){        memset(dp,0,sizeof(dp));        LL  L,R,temp,A; LL cost[5],val[5];        for(int i=1;i<=3;i++) cin>>cost[i]>>val[i];        cin>>L>>R>>temp>>A;        for(int i=L;i<=R;i++) dp[i]=temp+A*(i-L); // 基础伤害        for(int i=0;i<=T;i++){   //对于第i秒来说,有几种方式让其到达现在的状态。 两种方式。            if(i>L) dp[i]=max(dp[i],dp[i-L]+dp[L]);            if(i>R) dp[i]=max(dp[i],dp[i-R]+dp[R]);        }        //for(int i=0;i<=T;i++) printf("%d ",dp[i]);        for(int i=1;i<=3;i++){            for(int j=cost[i];j<=T;j++)                dp[j]=max(dp[j],dp[j-cost[i]]+val[i]);        }        cout<<dp[T]<<endl;    }return 0 ;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 道氏火口 道法 道法无边 道法永恒 道法天师 道法虚空 道法苍生 道法自然下一句 道法自然天人合一 超级道法传承系统 道法自然如来 神即道道法自然如来 天人合一道法自然 道法自然的意思 道法自然是什么意思 梦想世界道法 道法天人 无为天子 道法虚空 山春秀 桃花源记道法 八年级上册道法知识点归纳 人法地地法天天法道道法自然 人法天天法地地法道道法自然 道济 东莞市道滘医院 东莞谢岗医院 道满 道爵电动汽车 道爵电动车价格表 道爵电动汽车价格 道爵电动车价格 道爵电动汽车价格表 道爵开拓者s72v价格 道玄 道王 道王手游 王守道 群臣坐陷王于恶不道 极道美食王 莫拉特王 李道 陈道