砍树
时间限制:1秒 内存限制:256M
【题目描述】
H先生想把门前N棵树挡住了他家阳台的视线,因此计划进行适当的砍伐。已知第 i 棵树位于位置 xi(−109≤xi≤109)。
环境保护法限制了H先生可以砍伐哪些树。有K个限制(1≤K≤105),规定在线段 [li,ri](包含端点)中必须始终至少存在 ti 棵树(−109≤li,ri≤109)。输入保初始时满足这些限制。
H先生想请帮助他计算他可以砍伐的树的最大数量,同时仍然满足所有限制!
【输入格式】
每个测试点包含T(1≤T≤10)组独立的测试数据。输入保证一个测试点中的所有N之和以及K之和均不超过3×105。
输入的第一行包含T。每组测试数据的格式如下:
- 第一行包含整数N和K。
- 下一行包含N个整数 x1,…,xN。
- 以下K行,每行包含三个空格分隔的整数li,ri 和 ti。
【输出格式】
对于测试点,输出一行,包含一个整数,表示 H先生可以砍伐的树的最大数量。
【输入输出样例1】
Input
3
7 1
8 4 10 1 2 6 7
2 9 3
7 2
8 4 10 1 2 6 7
2 9 3
1 10 1
7 2
8 4 10 1 2 6 7
2 9 3
1 10 4
Output
4
4
3
【样例说明】
对于第一组测试数据,H先生 可以砍伐前 4 棵树,留下位于 xi=2,6,7 的树来满足限制。
对于第二组测试数据,额外的限制不会影响 H先生 可以砍伐哪些树,因此他可以砍伐相同的树并同时满足两个限制。
对于第三组测试数据,H先生 至多只能砍伐 3 棵树,因为初始时有 7 棵树,但第二个限制要求他至少留下 4 棵树不砍伐。
【测试点性质】
- 测试点 1:N,K≤16。
- 测试点 2-4:N,K≤1000。
- 测试点 5-6:对于所有的 i=1,…,K 有 ti=1。
- 测试点 7-10:没有额外限制。
【来源】
Mr.he