题目 :小明的彩灯
方法一
相关题目
解析
这道题目要求在一段数上加上或减去相同的某个数 , 这就是典型的前缀和和分差问题. 由于频繁的输入使用 Scanner
还会超时… 需要使用StreamTokenizer
.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Main {
static int N=500010;
static long[] a=new long[N];
static long[] b=new long[N];
static int n,m;
static StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
public static long nextLong() throws IOException {
in.nextToken();
return (long)in.nval;
}
public static int nextInt() throws IOException{
in.nextToken();
return (int)in.nval;
}
public static void main(String[] args)throws IOException {
n = nextInt();
m = nextInt();
for (int i = 1; i <= n; i++) {
a[i] = nextLong();
}
while (m>0) {
m--;
int l = nextInt();
int r = nextInt();
long x = nextLong();
b[l]+=x;
b[r+1]-=x;
}
for (int i = 1; i <= n; i++) {
b[i]+=b[i-1];
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++) {
a[i] +=b[i];
if(a[i] < 0) {
sb.append(0+" ");
}else {
sb.append(a[i]+" ");
}
}
System.out.println(sb);
}
}
+" ");
}
}
System.out.println(sb);
}
}