AGC038A01 Matrix 설명 [pyhon]

URL


https://atcoder.jp/contests/agc038/tasks/agc038_a

문제 개요

  • H*W의grid가 있습니다.0, 1 값 없음
  • a, b를 주고 어느 줄이든 01이 적은 쪽은 a, 어느 열에 01이 적은 쪽은 b개
  • 불가능한 출력 "아니오"
  • 구속


    1 <= H,W <= 1000
    0 <=A <= W/2
    0 <= B <= W/2

    코드 커밋


    h, w, a, b = map(int, input().split())
    for i in range(h):
        for j in range(w):
            if i < b:
                if j < a:
                    print(1, end="")
                else:
                    print(0, end="")
            else:
                if j < a:
                    print(0, end="")
                else:
                    print(1, end="")
        print()
    
    
    

    고찰하다.


  • 몇 번 시도해보니 전혀 이해가 안 돼서 AC를 해설했기 때문에 자신의 생각을 메모로 공식적인 해설을 서술했다

  • 우선, 0부터 순서대로 c, r를 지정하면 어떤 조건을 구축할 수 있습니까
  • 한 쪽이 0이면 다른 쪽은 어떤 값을 취할 수 있지만 한 상황에서 2 이후 h, w의 값에 의존하지 않는 보편적인 구조를 고려하지 않고 포기할 수 없다

  • 다음은 조건을 충족시킬 수 있는 간단한 구조 규칙이 있는지 생각해 봅시다.
  • 고정된 단부를 통해 다른 줄을 같은 h, w의 값이 작은 부분으로 귀납하기 어렵다.

  • 나는 가까스로 상황을 생각해 보았지만 생각지도 못했다.

  • 해설

  • h*w의 격자를 4부분으로 나누고 격자가 없는 모든 것을 같은 문자로 채웁니다

  • 왼쪽 상단 격자의 크기를 a*b로 설정하여 인접 격자의 값을 변경하여 조건을 만족시킵니다

  • 배우다
    간단한 구조 상황을 고려할 때 규칙적인 기초가 간단한 것 외에 기하학적 간단한 구조 방법도 고려한다.
  • 실시 방침


    참고 자료


  • https://img.atcoder.jp/agc038/editorial.pdf
    설명 pdf
  • 참고 자료

    좋은 웹페이지 즐겨찾기