Codeforces #587C (1216C) White Sheet
9472 단어 codeforces
Codeforces #587C (1216C) White Sheet
너무 바꿀 필요는 없지만 이 문제는 다음과 같다.- 白シート、黒シート、黒シートの3つのシートの左下と右上のx,y座標を渡す
- 白->黒->黒の順でシートを張るがこのとき、白のシートが完全に隠れるかを判定せよ
- x,yは x,y < 10^6
한쪽 눈을 뜰 때 무슨 은신법이 있느냐
- 白シート、黒シート、黒シートの3つのシートの左下と右上のx,y座標を渡す
- 白->黒->黒の順でシートを張るがこのとき、白のシートが完全に隠れるかを判定せよ
- x,yは x,y < 10^6
이 숨겨진 방식에 전혀 영향을 미치지 않기 때문에 생각하고 싶은 것은 말하지 않아도 안다.
직관적으로 두 번째 종이에 흰색을 숨기려면 원래의 사각형을 모두 숨겨야 한다.
이 경우 두 번째는 아무리 붙여도 완전히 숨겨져 두 번째를 붙이지 않아도 숨길 수 있다.
한순간에 두 번째를 어떻게 붙이느냐에 영향을 미치겠지만'다른 장'만 붙기 때문에 원래 네모를 붙이지 않으면 숨길 수 없다
이 경우 두 번째 장의 결과에 영향을 미칠 수 있다.원래 4각에 흰색 점선이 있으면 5의 검은색 4각은 한쪽의 2각을 숨기기 때문에 두 번째 검은색 4각은 적선의 4각을 완전히 숨기려면 숨길 수 있다.
다소 망설이지만 이 사각형을 숨기려면 세로, 가로로 남은 흰색 부분과 같은 이상의 사각형이 없으면 숨길 수 없다.
요점: 검은색 종이가 두 장밖에 없어요.
만약 이 문제가 두 장의 검은색이 아니라 임의의 검은색 종이를 사용한다면 상황은 달라질 것이다.예를 들어 상기 2의 경우에도
아래 4장(건)이 빨간색 구역을 숨기면 끊어짐을 숨길 수 있기 때문에 예를 들어 흰색 사각형이 어떻게 분할되었는지 잘 유지해야 한다(또는 검은색 사각형의 합계가 어느 구역을 숨겼는지).
요점: 이번 상황
검은색 종이 두 장만 사용할 수 있기 때문에 상술한 구분에 따라 다음과 같다
번호 매기기
첫 번째 종이로 가려요?
숨겨진 두 번째 사진은 무엇인가요?
1
NO
원래 흰색 사각형과 같은 크기
2
NO
원래 흰색 사각형과 같은 크기
3
YES
-
4
NO
원래 흰색 사각형과 같은 크기
5
NO
숨겨지지 않는 흰색 네모 치수 숨기기
6
NO
원래 흰색 사각형과 같은 크기
말해도 돼.x1, y1, x2, y2 = map(int, input().split())
x3, y3, x4, y4 = map(int, input().split())
x5, y5, x6, y6 = map(int, input().split())
def do_mask(x1, y1, x2, y2, x3, y3, x4, y4):
# もし、既に隠しきられている場合、その旨を返す
if x1 == -1:
return -1, -1, -1, -1
# 全部隠されている場合
if x3 <= x1 and x2 <= x4 and y3 <= y1 and y2 <= y4:
return -1, -1, -1, -1
# パターン5で横長に隠す場合
if x3 <= x1 and x2 <= x4:
if y3 <= y1 and y1 <= y4:
y1 = y4
if y3 <= y2 and y2 <= y4:
y2 = y3
# パターン5で縦長に隠す場合
if y3 <= y1 and y2 <= y4:
if x3 <= x1 and x1 <= x4:
x1 = x4
if x3 <= x2 and x2 <= x4:
x2 = x3
return x1, y1, x2, y2
# 1枚目で隠す
x1, y1, x2, y2 = do_mask(x1, y1, x2, y2, x3, y3, x4, y4)
# 2枚目で隠す
x1, y1, x2, y2 = do_mask(x1, y1, x2, y2, x5, y5, x6, y6)
print("NO" if x1 == -1 else "YES")
Reference
이 문제에 관하여(Codeforces #587C (1216C) White Sheet), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/recuraki/items/6956eaff0e3381f4abd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
검은색 종이 두 장만 사용할 수 있기 때문에 상술한 구분에 따라 다음과 같다
번호 매기기
첫 번째 종이로 가려요?
숨겨진 두 번째 사진은 무엇인가요?
1
NO
원래 흰색 사각형과 같은 크기
2
NO
원래 흰색 사각형과 같은 크기
3
YES
-
4
NO
원래 흰색 사각형과 같은 크기
5
NO
숨겨지지 않는 흰색 네모 치수 숨기기
6
NO
원래 흰색 사각형과 같은 크기
말해도 돼.
x1, y1, x2, y2 = map(int, input().split())
x3, y3, x4, y4 = map(int, input().split())
x5, y5, x6, y6 = map(int, input().split())
def do_mask(x1, y1, x2, y2, x3, y3, x4, y4):
# もし、既に隠しきられている場合、その旨を返す
if x1 == -1:
return -1, -1, -1, -1
# 全部隠されている場合
if x3 <= x1 and x2 <= x4 and y3 <= y1 and y2 <= y4:
return -1, -1, -1, -1
# パターン5で横長に隠す場合
if x3 <= x1 and x2 <= x4:
if y3 <= y1 and y1 <= y4:
y1 = y4
if y3 <= y2 and y2 <= y4:
y2 = y3
# パターン5で縦長に隠す場合
if y3 <= y1 and y2 <= y4:
if x3 <= x1 and x1 <= x4:
x1 = x4
if x3 <= x2 and x2 <= x4:
x2 = x3
return x1, y1, x2, y2
# 1枚目で隠す
x1, y1, x2, y2 = do_mask(x1, y1, x2, y2, x3, y3, x4, y4)
# 2枚目で隠す
x1, y1, x2, y2 = do_mask(x1, y1, x2, y2, x5, y5, x6, y6)
print("NO" if x1 == -1 else "YES")
Reference
이 문제에 관하여(Codeforces #587C (1216C) White Sheet), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/recuraki/items/6956eaff0e3381f4abd0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)