This problem can be modeled as a dynamic programming problem where decisions are made annually to maximize profit. Each year, we have a certain amount of capital and can choose to invest in d different options. Each option j requires an initial investment of a[j] units and yields a profit of b[j] un...
Given an array (a_1, a_2, \ldots, a_n) and three variables (P, Q, R) initially set to zero, process each element sequentially. For each element (a_i), choose one of three operations: (P := P \oplus a_i) (Q := Q \oplus a_i) (R := R \oplus a_i) After each operation, at least two of (P, Q, R) must be e...
This article summarizes several challenging competitive programming problems, showcasing various algorithmic techniques from dynamic programming and data structures to number theory and tree algorithms. Each problem explores distinct optimization strategies and mathematical insights. Problem 1: Reso...
Divisibility and Digit Extraction The objective is to determine if a given integer $N$ is either divisible by 3 or contains the digit '3'. A direct approach involves checking the modulo and then iteratively extracting digits. The time complexity for this is $O(\log_{10} N)$. bool is_lucky(long long...
This article examines several algorithmic problems featuring dynamic programming, state management, and graph traversal techniques. Problem 1: Frozen Dumplings Consider a scenario where daily dumpling prices vary, and storage costs accrue for each day a dumpling is kept. Given prices for n days and...
String Character AnnihilationWhen two distinct characters in a string annihilate each other, the specific identity of the characters is irrelevant. As long as multiple distinct characters exist, they can be paired off. The goal of minimizing the remaining characters can be modeled as a two-pile stac...
Matrix Chain Mulitplication Matrix chain multiplication finds the optimal parenthesization to minimize scalar multiplications. The recurrence relation is: m[i,j] = 0 if i = j min(m[i,k] + m[k+1,j] + p[i-1]*p[k]*p[j]) for i ≤ k < j if i < j Three nested loops are required: Outer loop: chain len...
We tackle two classic stock trading problems: at most two transactions (LeetCode 123) and at most k transactions (LeetCode 188). Both problems prohibit holding more than one share at a time: you must sell before buying again. Problem 123: Best Time to Buy and Sell Stock III Given an array prices, fi...
Problem A Given an n×m matrix of 0s and 1s, you can flip any submatrix. Find the minimum number of operations to create a path from the top-left corner to the bottom-right corner that only moves down or right and traverses only 0s. (n,m\le 1000). This is a straightforward dynamic programming problem...
300. Longest Increasnig Subsequence Today we officially begin the subsequence series. This problem is relatively straightforward and serves as a good introduction to the thought process behind subsequence dynamic programming problesm. class Solution { public: int lengthOfLIS(vector<int>& s...