题解 | 染色

染色

https://www.nowcoder.com/practice/fb48f6284a0f4e198f0bf2a988f703f8

这一题是差分数组的应用,因为是在一段区间里面的批量操作

当向油漆桶中假如各种颜色的油漆时,会有不同的结果

那么我们就可以根据它调料颜色的种类创建三种差分数组,用于表示加该种颜色的次数的差分数组

如果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);

	}

}

全部评论

相关推荐

找工作勤劳小蜜蜂:矛盾是没有实习,就是没实战经验,公司不想要,公司不要,你就没有实习,你就进入死循环,另外你的项目不是社会现在有大量岗位存在行业用的,云存储人员早就饱和。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务