如何优化运行速度

chdaxia 2015-09-05 01:26:07
是一道算法题,但是显示结果超时,不知道有什么更好的办法可以优化。
运行时间是18000ms需要优化到10000ms,我看了题库里基本都是C实现的没有java,不知道如何用java写出高速的算法
题目是:
假设你拥有 n 个魔法单位,他们从左到有站在一行,编号从 1 到 n。 每个单位拥有三项属性:



si: 初始法力。

mi: 最大法力上限。

ri: 每秒中法力回复速度。



现在你操纵一个毁灭者,有 m 个操作,t l r,表示时刻 t,毁灭者对所有编号从 l 到 r 的单位,使用了魔法吸收。操作按照时间顺序给出,计算毁灭者一共吸收了多少法力。



输入
输入数据的第一行有一个整数 n(1 ≤  n ≤105) — 你的魔法单位的数目。

接下来的 n 行,每行有三个整数 si, mi, ri(0 ≤ si ≤ mi ≤ 105, 0 ≤ ri ≤ 105) 描述一个魔法单位。

接下来一行又一个整数 m(1 ≤ m ≤ 105), — 操作的数目。

接下来的 m 行,每行描述一个操作 t, l, r(0 ≤ t ≤ 109, 1 ≤ l ≤ r ≤ n),t 非降。



输出
输出一行一个整数表示毁灭者一共吸收了多少法力。









我的代码如下:
import java.util.Scanner;

public class Main {

public class Magician {
public int mana;
public int maxMana;
public int regenerateNum;
public int timeT;

Magician(int mana, int maxMana, int regenerateNum) {
this.mana = mana;
this.maxMana = maxMana;
this.regenerateNum = regenerateNum;
timeT = 0;
}

public int absorbMana(int currentTime) {
int result = 0;
result = mana + (currentTime - timeT) * regenerateNum < maxMana ? mana
+ (currentTime - timeT) * regenerateNum
: maxMana;
// System.out.println(result);
timeT = currentTime;
mana = 0;
return result;
}

}

public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int numOfMagician = sc.nextInt();
Magician magicianList[] = new Magician[numOfMagician];

int sj, mj, rj;
Main test = new Main();
for (int i = 0; i < numOfMagician; i++) {
sj = sc.nextInt();
mj = sc.nextInt();
rj = sc.nextInt();
magicianList[i] = test.new Magician(sj, mj, rj);
}

int numOfOperation = sc.nextInt();
int ti, li, ri;
int result = 0;
for (int i = 0; i < numOfOperation; i++) {
ti = sc.nextInt();
li = sc.nextInt() - 1;
ri = sc.nextInt() - 1;
while (li <= ri) {
result += magicianList[li].absorbMana(ti);
li++;
// System.out.println("absorb "+li+"result is "+result);
}
}

System.out.println(result);

}
}


...全文
64 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧