各位大虾,来帮一下忙吧
各位大虾帮我找一下思路吧,我刚接触编程,下面是我新的作业,帮我找一下思路哦!!!先谢谢各位大虾
G 爱玩游戏的ACMer
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: 无限制
Description
有个ACMer很喜欢玩角色扮演类游戏。这天,他玩了一个新游戏,这个游戏里面有个很有意思的设定,就是可以对NPC使用读心术,
从而获得对方的一些隐秘资料,但是使用读心术根据对象的不同要耗费不同的经验值。
比如说,可以对商店的老板以及与他有关的人使用读心术,依靠得来的信息可以迫使商店老板降低出售物品的价格。
比如有个NPC是老板的朋友,对他使用读心术,耗费了X点经验之后,老板出售的物品的价格就会降低10%。
降价是可以叠加的,若有对两个可以导致老板降价10%的NPC使用读心术,那么最后价格将变为原价格的81%。
此时,他想出去练级,由于地图很大,因此他决定一直到升完一级再回来。(即不会练级到一半又跑回来买东西)出发之前他决定给自己买几件好装备。
买来的装备可以提高他的战斗力,从而提高他获取经验值的速度。当然,买装备是要用钱的,比如说有件装备需要金钱w,买了之后可以提高获取经验的速度10%。
假如购买了两件可以提高获取经验速度10%的装备,那么最后的总获取经验速度将提高20%。
由于游戏的限制,无论如何降低价格,商店里的装备的价格都是整数,同时,装备的价格最低为1。
此时,ACMer的游戏人物当前的经验总量为E,升级的总经验为S,升级所需要的经验即为S-E。
若没有购买装备,刚开始的获取经验的速度为V,若购买了一件提高获取速度10%的装备,那么获取经验的速度将变为V*110%,而此时的升级所用时间则变为(S-E)/(V*110%).
ACMer来到商店老板前,他突然觉得很烦恼,不知道要怎么使用读心术和怎么买装备才能够使得升级所用的时间最少。
你能帮帮他吗?
Input
第一行输入CASE数T,接下来第K+1行按顺序输入:
经验总量E(0<E<100),升级总经验S(0<S<10000),金钱总数M(0<M<100),初始升级速度V(0<V<100)。
第K+2行输入NPC的个数i(0<i<100)。
从第K+3行开始的i行每行输入对NPC使用读心术所耗费的经验数x[i](0<x[i]<100),打折的价格百分比a[i](0<a[i]<1)(用小数表示,如减少10%,就写成0.9)
第K+3+i行输入装备的个数N(0<N<100)。
从第K+4+i行开始的N行每行输入买该件装备所使用的钱数w[N](0<w[N]<100),以及该装备对升级速度提升的百分比b[N](0<b[N]<10)(用小数表示,如提高10%,写成0.1)
每行每两个数据间用空格隔开,其中除b[N]与a[i]外,其余均为整形。
Output
对应每个CASE输出所用时间time(保留小数点后两位),每个一行。
Sample Input
2
10 1000 50 10
1
10 0.5
1
100 2
10 1000 100 10
3
6 0.4
5 0.5
5 0.5
1
400 1
Sample Output
33.33
50.00
Hint
第一个case里面的ACMer向一个NPC使用了读心术,并购买了一件装备,最后得出的时间是33.33.
第二个case里面的最优解应当是向后两个NPC使用读心术,因为若对第一个NPC使用读心术的话,就会导致不够经验来购买剩下的。
因为ACMer是购买完物品之后,再出去练级的,题目不能够练级到一半又回来买东西,所以只能向后两个NPC使用读心术,最后结果是购买一件装备,然后升级,使用时间为50.00