小m的刷子

小m的刷子

小m的刷子

题目背景(Background)

小m买了一把新刷子,他很开心,于是买了红色、绿色、蓝色的油漆各一桶,想拿家门前的 \(N\)块排成一排 的白色地砖试试这把新刷子好不好用。

题目描述(Description)

他每次刷地砖可以把编号\(A\)到编号\(B\)(包含\(A\)与\(B\))的地砖一次性 全部 刷上一种颜色。

其中:\(0\)代表红色,\(1\)代表绿色,\(2\)代表蓝色。

比如他要把第\(2\)到第\(8\)块砖刷上红/绿/蓝色,就记(\(0\) \(2\) \(8\))/(\(1\) \(2\) \(8\))/(\(2\) \(2\) \(8\)) 。

小m有时候会重复粉刷同一块瓷砖。

已知红加绿或绿加红会变成黄色,红加蓝或蓝加红会变成紫色,绿加蓝或蓝加绿会变成青色,而黄/紫/青加上任何颜色都会变成黑色(黑色加上任何颜色仍然是黑色),问:

小m刷\(M\)次后有多少块地砖会变成黑色?有多少块地砖会变成紫色?

注意: 对于一块瓷砖,如果粉刷顺序为:红 红 红 红 红 蓝,最终颜色为紫色而不是黑色,而 红 红 蓝 红 会得到黑色。

输入输出格式(Format)

输入(Input)

第一行两个整数\(N\)、\(M\)以空格分开(\( 1 \leq N \leq 10^7 \), \( 1 \leq M \leq 10^5 \)),后面\(M\)行每行三个整数以空格分开,分别代表颜色和粉刷的起始位置, 保证粉刷起点编号小于终点编号

输出(Output)

一行两个以空格分开的整数,分别代表黑色的块数和紫色的块数。

输入输出样例(Example/Sample)

输入1(Input 1)

2 2
0 2 2
2 2 2

输出1(Output 1)

0 1

输入2(Input 2)

50 4
0 1 12
0 12 50
2 25 30
1 20 26

输出2(Output 2)

2 4

样例1解释(Explanation)

第一步在第二块瓷砖上刷上红色

瓷砖状态变为 :白 红

第二步在第二块瓷砖上刷上蓝色

瓷砖状态变为 :白 紫

最终黑色块数为\(0\),紫色块数为\(1\),输出\(0\) \(1\)

样例2解释(Explanation)

黑色瓷砖编号为:\(25\) \(26\)

紫色瓷砖编号为:\(27\) \(28\) \(29\) \(30\)

提示(Note)

AC率低是因为测试数据没搞好,我自己提交了好几十回。

瓷砖是一排,只有一排。

测试数据很有梯度,暴力出奇迹,冲冲冲。

时空限制(Limitation)

1 s,512 MB for each test case.

数据范围(Constraint)

对于 10% 的数据,满足\( 1 \leq N \leq 10,1 \leq M \leq 10\)

对于 20% 的数据,满足\( 1 \leq N \leq 500,1 \leq M \leq 100\)

对于 30% 的数据,满足\( 1 \leq N \leq 5000,1 \leq M \leq 5000\)

对于 40% 的数据,满足\( 1 \leq N \leq 10000,1 \leq M \leq 10000\)

对于 50% 的数据,满足\( 1 \leq N \leq 50000,1 \leq M \leq 10000\)

对于 60% 的数据,满足\( 1 \leq N \leq 100000,1 \leq M \leq 50000\)

对于 70% 的数据,满足\( 1 \leq N \leq 500000,1 \leq M \leq 50000\)

对于 80% 的数据,满足\( 1 \leq N \leq 5000000,1 \leq M \leq 50000\)

对于 90% 的数据,满足\( 1 \leq N \leq 5000000,1 \leq M \leq 100000\)

对于 100% 的数据,满足\( 1 \leq N \leq 10000000,1 \leq M \leq 100000\)

题目来源(Source)(原则上留下出题人的名字,方便答疑)

这么好的题目创意一定是来自黄锦宇啊

这么毒瘤的数据一定来自马青宇啊

信息

ID
1004
难度
9
分类
(无)
标签
(无)
递交数
49
已通过
2
通过率
4%
被复制
1
上传者