Young

Subsequences Summing to Sevens 본문

코딩 테스트 대비 추천 문제/USACO

Subsequences Summing to Sevens

yyjjang9 2019. 4. 2. 13:47
728x90
반응형

https://www.acmicpc.net/problem/11974

 

11974번: Subsequences Summing to Sevens

Farmer John's \(N\) cows are standing in a row, as they have a tendency to do from time to time. Each cow is labeled with a distinct integer ID number so FJ can tell them apart. FJ would like to take a photo of a contiguous group of cows but, due to a trau

www.acmicpc.net

이 문제는 기본 pre-sum을 구한다는 건 쉽게 알 수 있으나, 그것을 조금만 응용하면 되는 문제이다.

하지만, 난 헤매고 있었지 ㅎㅎ..

아이디어는 어렵지 않다. 아래 설명이 있으니 생략. 인상적인 문제였다.

어디에 더 응용할 수 있을지 깊이 생각해 봐야겠다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
#include<algorithm>
 
#define endl    '\n'
#define FastIO ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
 
using namespace std;
typedef long long ll;
typedef pair<intint> pii;
int n;
int min_idx[7], max_idx[7];
 
int main() {
    FastIO;
 
    // 연속한 수의 합이 배수인지 확인하기 위해서는 -> pre-sum을 구하는건 확실함.
    // 임의의 구간 i ~ j 합을 구하기 위해 sum[j] - sum[i - 1]을 하는데
    // 이 구간합이 7의 배수인지 한 번에 확인할 수 있다면 효율적일 것이다!
 
    // sum을 구할 때마다 (처음부터 현재까지의 구간 합)이 특징을 가지고 있음.
    // 나머지 별로 구간의 위치를 기록해 놓는다면, 각 구간의 합이 7의 배수일지 아닐지 한 번에 알 수 있을 것이다.
    // 빼기로 7의 배수이려면, 나머지가 같은 숫자를 빼면 7의 배수가 된다는 건 쉽게 알 수 있음.
    
    cin >> n;
    int total = 0;
    for (int i = 1; i <= n; i++) {
        int a; 
        cin >> a;
        total = (total + a) % 7
        if (!min_idx[total]) min_idx[total] = i; // 최초 발견하면 저장하고 그만둔다.
        max_idx[total] = i; // 발견할 때마다 업데이트 해준다. 그래야 최대로 오른쪽까지 나머지 total인 인덱스를 저장할 수 있다.
    }
 
    int ans = 0;
    for (int i = 0; i < 7; i++) {
        if (!min_idx[i] || !max_idx[i]) continue;
        ans = max(ans, max_idx[i] - min_idx[i]);
    }
    
    cout << ans;
 
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 
728x90
반응형

'코딩 테스트 대비 추천 문제 > USACO' 카테고리의 다른 글

Why Did the Cow Cross the Road III (Silver)  (0) 2019.04.05
Moocast  (0) 2019.04.04
Why Did the Cow Cross the Road (Silver)  (0) 2019.04.04
Build Gates  (0) 2019.04.02
Angry Cows  (0) 2019.04.02