# 575 라운드 Codeforces (사업부 3.) C - 로봇 브레이크 아웃

Codeforces 라운드 # 575 (사업부. 3)

 

C - 로봇 브레이크 아웃

N 로봇은 실험실에서 탈출! 이 로봇은 실험 때문에 당신은 가능한 한 빨리 그들을 발견해야하고, 그들의 행동은 아직 테스트하지, 그래서 그들은 정말 위험 할 수 있습니다!

다행히, 당신의 로봇은 탈출하더라도, 당신은 여전히 ​​그들에 일부 제어 할 수 있습니다. 무한이 좌표 평면 당신이 살고있는 세상을 모델링 할 수 있으며, i 번째 로봇은 현재 지점을 갖는 좌표 (XI, 이순신)에 있습니다 : 우선, 각 로봇의 위치를 ​​알고있다. 또한, 당신은 로봇의 모든 정확히 하나의 명령을 보낼 수 있습니다. 이 명령은 정수 개의 번호 X 및 Y를 포함해야하고, 각 로봇이 명령을 수신하면, 지점 갖는 좌표 (X, Y)를 향해 이동하기 시작. 로봇 두 경우에 그 운동을 중지 :

  • 하나는 (X, Y)이 도달;
  • 아니면 가까이 (X, Y)을 얻을 수 없습니다.

일반적으로, 모든 로봇은 다른 지점 좌표 평면의 어느 지점에서 얻을 수 있어야합니다. 각 로봇은 일반적으로 이동하는 네 가지 작업을 수행 할 수 있습니다. 의는 (XC, YC)와 같은 로봇의 현재 좌표를 나타내는 보자. 그런 다음 이동 시스템은 네 개의 인접 점의 이동 할 수 있습니다 :

  1. 제 조치가 이동할 수 있도록 (XC, YC)에 (1-XC, YC);
  2. 두 번째 동작은 (XC, YC) (XC, YC + 1)로 이동할 수 있도록;
  3. 제 조치가 이동할 수 있도록 (XC, YC) 내지 (XC + 1, YC);
  4. 네번째 동작 그것이 (XC, YC)까지 이동할 수 있도록 (XC, YC-1).

불행하게도, 일부 로봇의 일부 이동 시스템이 제대로 작동 것 같다. 각 로봇의 경우 당신은 그것을 수행 할 수있는 작업을 알고, 어떤을 그것을 수행 할 수 없습니다.

당신은 정말 모든 로봇이 동일한 지점에서 수집 명령을 보내려고합니다. 이렇게하려면 각 로봇이 점 (X, Y)에 도달 할 수 있도록 정수 번호 X와 Y의 쌍을 선택해야합니다. 그러한 점을 찾을 수 있습니까?

입력

쿼리 수 - 첫 번째 줄은 하나의 정수 Q (1≤q≤105)가 포함되어 있습니다.

그런 다음 Q 쿼리은 다음과 같습니다. 쿼리에서 로봇의 수 - 각 쿼리는 한 줄에 하나의 정수 n (1≤n≤105)를 포함로 시작합니다. 다음에 n 라인을 따라,이 라인의 제 i는 현재 쿼리의 i 번째 로봇 설명는 여섯 개 정수 번호 XI 이순신, 인터넷, 1, 인터넷, 2, 인터넷, 3, 인터넷, 4 (-105 포함 ≤xi, yi≤105, 0≤fi, j≤1). 처음 두 숫자는 i 번째 로봇의 초기 위치를 설명하고, 다음 네 개의 숫자들은 (i 번째 로봇이 이동하는 데 사용할 수있는 액션 인터넷, J = 1, i 번째 로봇이 사용할 수있는 경우 j 번째를 설명 작용 및 인터넷, J = 0은 j 번째 작업을 사용할 수없는 경우).

모든 쿼리를 통해 로봇의 총 수가 105을 초과하지 않도록 보장한다.

산출

이러한 쿼리 입력에 나타나는 순서대로, 각각 독립적으로 쿼리에 응답해야한다.

쿼리에 응답하려면 다음 중 하나를 수행해야합니다 :

  • 모든 n 개의 로봇에 의해 별도의 행에 인쇄 한 숫자 0에 도달 할 지점을 찾을 수없는 경우,
  • Xand Y는 모든 N 개의 로봇이 도달 지점의 좌표 X Y 1 : 모든 N 로봇 인쇄 동일한 라인에 3 개의 공간으로 구분하여 정수 도달 한 지점을 찾을 수있는 경우. 두  X  및  Y를  초과하지 않아야한다  (105)  의 절대 값만큼을; 이를 보증되는 모든 로봇에 의해 도달 가능한 적어도 하나의 포인트 좌표를 모두 초과하지 않은 이러한 포인트 다음 적어도 하나 존재하는 경우  (105)  의 절대 값을 .

입력

4

-2 -1 0 0 0 0

-2 -1 0 0 0 0

1 5 1 1 1 1

2 5 0 1 0 1

(3) 5 1 0 0 0

1,337 1,337 0 1 1 1

1,336 1,337 1 1 0 1

1

(3) 5 1 1 1 1

산출

1 -1 -2

1 2 5

0

1 -100000 -100000

 

문제의 의미 4 개의 수직 및 수평 마크 대상은 로봇의 위치 및 N 로봇을들 수있다

의 절대 값을 초과하지 않는 경계에서 당신을 물어  10 ^ (5)지도, 포인트를 찾을 수 있습니다, 로봇은 모든 점에 도달 할 수 있습니다.

아이디어 : 로봇의 가능한 범위를 유지하는 것은 모든, 갈 수 없어 이러한 로봇의 방향에 따라 갈 수 있습니다

最后看区间是否成立,成立输出 1 和 区间上任意一点,不行输出 0 就行了。

另外,这里区间就是左下点和右上点组成的矩阵。

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<map>
 6 #include<set>
 7 #include<vector>
 8 #include<queue>
 9 #include<algorithm>
10 using namespace std;
11 #define ll long long 
12 const int inf=1e9+7;
13 const int mod=1e9+7;
14  
15 const int maxn=1e5+5;
16 pair<int,int> num[maxn];
17  
18 int main()
19 {
20     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
21     
22     int T;
23     cin>>T;
24     int n;
25     
26     while(T--)
27     {
28         cin>>n;
29         
30         pair<int,int> left={-100000,-100000};//左下点 
31         pair<int,int> right={100000,100000};//右上点 
32         int a,b,c,d;//左上右下不能走 
33         for(int i=0;i<n;i++)
34         {
35             cin>>num[i].first>>num[i].second>>a>>b>>c>>d;
36             
37             if(a==0)
38                 left.first=max(left.first,num[i].first);
39             if(b==0)
40                 right.second=min(right.second,num[i].second);
41             if(c==0)
42                 right.first=min(right.first,num[i].first);
43             if(d==0)
44                 left.second=max(left.second,num[i].second);
45         }
46         
47         if(left.first>right.first||left.second>right.second)//不成立 
48         {
49             cout<<0<<endl;
50             continue;
51         }
52         
53         cout<<1<<" "<<left.first<<" "<<left.second<<endl;
54     }
55     
56     return 0;
57 }

 

추천

출처www.cnblogs.com/xwl3109377858/p/11271862.html