ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 20972(Spaced Out)
    카테고리 없음 2021. 3. 27. 16:03

    www.acmicpc.net/problem/20972

     

    20972번: Spaced Out

    Farmer John wants to take a picture of his cows grazing in their pasture to hang on his wall. The pasture is represented by an $N$ by $N$ grid of square cells (picture an $N \times N$ chess board), with $2 \leq N \leq 1000$. In the last picture Farmer John

    www.acmicpc.net

     

    N*N의 격자점에 점수가 빠짐없이 있고, 그 N*N의 격자점에서 아무 2*2를 잡아도 소들이 2마리가 되게끔 할때의 격자점 점수의 합의 최대를 구하는 문제

     

    우선 그냥 관찰만 한다. 

     

    그러다가 관찰을 하다보면 

     

    C     C

    C     C

    C     C

    C     C

    C     C

    C     C

     

    이런식으로 음 어떻게 설명을 해야하지 홀수 열들은 모두 같은 배치, 짝수 열들도 모두 같은 배치로 소를 배치할 수 있고, 이번에는 행에서 계산할 수 있다. 

     

    그냥 이게 끝 사실 행에서 어떤식으로 바뀌는지 더 자세하게 생각해보려고 하진 않았기 때문에 확실치는 않다.

     

    이제부터 그리디 

     

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int num[1005][1005];
    
    int main() {
    	ios_base::sync_with_stdio(false);
    	cin.tie(0);
    	int n;
    	cin >> n;
    	int sum1 = 0;
    	int sum2 = 0;
    	for (int i = 0; i < n; i++) {
    		for (int j = 0; j < n; j++) {
    			cin >> num[i][j];
    		}
    	}
    
    	for (int i = 0; i < n; i++) {
    		int a = 0, b = 0, c = 0, d = 0;
    		for (int j = 0; j < n; j += 2) {
    			a += num[i][j];
    			c += num[j][i];
    		}
    		for (int j = 1; j < n; j += 2) {
    			b += num[i][j];
    			d += num[j][i];
    		}
    		sum1 += max(a, b);
    		sum2 += max(c, d);
    	}
    	cout << max(sum1, sum2);
    }

    댓글

Designed by Tistory.