【发布时间】:2020-10-10 10:00:16
【问题描述】:
所以有一个点列表 (x1,y1,z1),(x2,y2,z2),...(xn,yn,zn)。
您可以对任意数量的这些点执行操作 O。
操作 O 导致 (x,y,z)= (max(x1,x2,...xn),max(y1,y2,...yn),max(z1,z2,...zn ))。
给定(x,y,z),你需要判断是否可以对列表中的一些点进行O操作得到(x,y,z)的结果。
例如:给你点 (1,2,1),(3,1,4),(5,2,1)。 能不能进行O运算得到1) (3,2,1) 2) (1,1,1)
第一行包含 n 和 q,即点数和 no。查询次数
接下来的 n 行包含空间分隔的 n 个点
接下来的 q 行包含 q 个点,它们是查询
1<=q<=10^5
1<=n<=10^5
x,y,z 是整数
输入:
2 2
1 3 5
5 3 1
5 3 5
3 3 3
预期输出:
YES
NO
我的逻辑:
for (int i = 0; i < q; i++)
{
cin>>x>>y>>z;
for (int j = 0; j < n; j++)
{
if(arr[j][0]==x && arr[j][1]<=y && arr[j][2]<=z)
first=1;
if(arr[j][0]<=x && arr[j][1]==y && arr[j][2]<=z)
second=1;
if(arr[j][0]<=x && arr[j][1]<=y && arr[j][2]==z)
third=1;
if(first+second+third==3)
break;
}
if(first+second+third==3)
cout<<"YES\n";
else
{
cout<<"NO\n";
}
first=0;
second=0;
third=0;
}
注意:这里 arr[][] 包含给定的坐标。 对于查询 q 中的每个 x y z,我正在执行此操作。
很少有测试用例失败,给我一个运行时错误(超出时间限制)。有没有更好的方法来做到这一点。
【问题讨论】:
-
请不要发送不相关的语言标签。
-
抱歉,我是网站新手,我已经删除了 2 个语言标签
-
请提供minimal reproducible example 输入、预期输出和实际输出
-
我已经添加了输入和预期的输出。希望现在很清楚
-
@roccok123 你能说出
q、n和坐标x、y、z的限制(范围)吗?它们都是整数吗?
标签: c++ arrays performance