#thzx004. 伪影检测
伪影检测
题面:伪影检测
题目描述
在古早的 Windows 系统中,有一种屏幕保护程序,显示多个大小不一的球体在屏幕上碰撞反弹。如今,AI 生成视频有时会出现伪影(重影、分身),为了检测AI训练效果,我们让AI生成一种模拟了这种屏保效果的视频,通过检测其是否出现伪影来确认AI训练参数是否存在问题。 AI 生成的视频是否出现伪影(即多个球体重叠),我们需要进行一些检测。同时,我们会给正在训练的AI一些容忍度,当一些小范围的球出现违规,我们暂时容忍可以继续训练,只有当违规数量特别多时才会终止训练,查找问题。
简化模型:给定一个宽度为 L、高度为 W 的长方形屏幕,左下角坐标为 (0,0),内部有 n 个大小不一的圆(球体的投影)。如果存在以下两种违规情况之一,则认为出现了伪影,需要重新训练 AI 参数:
- 范围违规:有超过 k 个圆的任何部分超出了长方形范围(与边界相切不算超出)。
- 相交违规:在长方形范围内的圆中,存在至少 m 个圆属于同一个相交群体。
注意:只要满足以上两个条件中的任意一个,就判定为出现伪影。
具体来说,两个圆相交当且仅当两个圆的圆心距离小于两圆半径之和。注意,相切不算相交,这是为了模拟真实碰撞屏保中球体可以接触但不穿透的现象。
相交关系是传递的:如果圆 A 与圆 B 相交,圆 B 与圆 C 相交,那么圆 A 和圆 C 属于同一个群体,即使它们没有直接相交。
一个圆被认为是"在长方形范围内"的,当且仅当:
- 圆心到长方形四条边的距离都大于等于半径
- 即:x >= r 且 x <= L - r 且 y >= r 且 y <= W - r
输入格式
第一行一个整数 T,表示数据组数。
对于每组数据:
- 第一行五个整数 L, W, n, m, k,分别表示长方形的长、宽、圆的数量和两个阈值。
- 接下来 n 行,每行三个整数 x, y, r,表示圆心坐标和半径。
输出格式
对于每组数据,如果出现伪影(满足两个违规条件之一),输出 "YES",否则输出 "NO"。
数据范围
- 1 <= T <= 10
- 对于 30% 的数据,n <= 100
- 对于 100% 的数据,n <= 2500,0 <= L, W <= 10^18,0 <= x, y <= 10^9,1 <= r <= 10^9,1 <= m <= n,0 <= k <= n
样例输入
3
100 100 5 3 1
10 20 5
30 40 8
60 70 6
80 90 7
45 55 4
50 60 5 2 0
5 5 10
15 5 10
25 5 10
35 5 10
45 5 10
50 50 8 4 1
5 5 10
45 5 10
5 45 10
45 45 10
25 25 5
30 30 4
15 15 3
20 20 2
样例输出
NO
YES
YES
样例解释
解释:
第一组:所有圆不相交,都在内部 → NO
第二组:5个圆半径都很大(10),相邻圆心距离为10,半径和为20,圆心距离10 < 20,所以相交,且都在内部,形成群体大小为5 ≥ m=2 → YES
第三组:超边界违规的圆超过了 k=1 个 → YES