题目传送门
题目描述
注意:数据已加强(2020/02/12 14:40)
天上有n颗星星,每颗星星有二维坐标 ,还有一个属性值 ,若两颗星星A, B满足 且 且
输入描述:
第一行一个正整数 n ,表示星星的个数。
接下来 n 行,每行 3 个整数
输出描述:
一行一个整数,表示答案。
输入
2
1 1 0
2 2 12
1 1 1
2 2 1
输出
1
0
备注:
题解
- 这道题目可以使用贪心算法求解。先按照X坐标从小到大排序,然后对于每一个点
- 如果Z = 1,查询比他X坐标小的Y坐标最大的Z= 0的点,进行配对,如果配对成功则将那个点都从候选点中排除。
- 如果Z = 0,将该点加入候选点。
- 证明
假设最优方案中排序后的第 1 个没有按贪心策略匹配的点,在设在中它能匹配的最大的点为,如果被点
- 原先 i 没有和任何匹配,则直接去掉 k 的匹配,将 i 和 j 匹配。
- 原先 i 和 m 匹配,则将 k 改成和 m 匹配,将 i 和 j 匹配,由于, 这样的匹配一定是成立的。并且修改后的匹配数不会变少,因此按照该贪心策略可以得到最优解。
AC-Code