这一题是差分数组的应用,因为是在一段区间里面的批量操作
当向油漆桶中假如各种颜色的油漆时,会有不同的结果
那么我们就可以根据它调料颜色的种类创建三种差分数组,用于表示加该种颜色的次数的差分数组
如果k==1,那么dy[l]+=1;dy[r+1]-=1;……
最后我们久对它们求前缀和,变成原数组,也就是表示该油漆桶中加入了哪些调料,然后根据加入调料的情况,选择绿色那一种
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int m=scanner.nextInt();
int dy[]=new int[n+2];
int db[]=new int[n+2];
int dr[]=new int[n+2];
while(m-->0) {
int l=scanner.nextInt();
int r=scanner.nextInt();
int k=scanner.nextInt();
if(k==1) {
dy[l]+=1;
dy[r+1]-=1;
}else if(k==2) {
db[l]+=1;
db[r+1]-=1;
}else {
dr[l]+=1;
dr[r+1]-=1;
}
}
int count=0;
for (int i = 1; i < dr.length; i++) {
dy[i]+=dy[i-1];
db[i]+=db[i-1];
dr[i]+=dr[i-1];
if(dy[i]>0&&db[i]>0&&dr[i]==0) {
count++;
}
}
System.out.println(count);
}
}



京公网安备 11010502036488号