USACO 2024 Bronze January Solutions

USACO 2024 January Contest, Bronze

Problem 1. Majority Opinion

http://www.usaco.org/index.php?page=viewproblem2&cpid=1371

** Dr. Chen’s C++ analysis & solution:**

Problem 2. Cannonball

http://www.usaco.org/index.php?page=viewproblem2&cpid=1372

** Dr. Chen’s C++ analysis & solution:**

Problem 3. Balancing Bacteria

http://www.usaco.org/index.php?page=viewproblem2&cpid=1373

** Dr. Chen’s C++ analysis & solution:**

On Problem 3 - Balancing Bacteria, the following nested loop solution is the most intuitive solution:

/*
    Author: Dr. Owen Chen
    Datetime: 2024-01-28 
    USACO 2024 January Contest, Bronze
    Problem 3. Balancing Bacteria
    Version 1 - Nested Loop
    Complexity: O(N^2)
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    int N;
    cin >> N;
    vector<ll> bacteria(N);
    for (int i = 0; i < N; i++) {
        cin >> bacteria[i];
    }
    ll res = 0;
    for (int i = 0; i < N; i++) {
        if (bacteria[i] != 0) {
            res += abs(bacteria[i]);
            for (int j = i+1; j < N; j++) {
                bacteria[j] -= bacteria[i] * ( j - i + 1);
            }
        }
    }
    cout << res << endl;
    return 0;
}

Unfortunately, the above O(N^2) solution will time out on test cases 11-15 when N is very large.

To solve all test cases, see the two-cumulative-sum solution above.