feat(cses): more problems
This commit is contained in:
parent
cd30fa3ea8
commit
1c1346689e
2 changed files with 103 additions and 91 deletions
|
|
@ -191,97 +191,108 @@
|
|||
Everyone recommends CSES so I started with it, doing the first 8
|
||||
problems.
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1068" target="_blank"
|
||||
>weird algorithm</a
|
||||
>
|
||||
</h3>
|
||||
<p>Trivial, but I forgot to print 1 at the end.</p>
|
||||
<p>
|
||||
<b>Return the exactly correct answer.</b>
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1083" target="_blank">
|
||||
missing number
|
||||
</a>
|
||||
</h3>
|
||||
<p>N/A</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1069" target="_blank">
|
||||
repetitions
|
||||
</a>
|
||||
</h3>
|
||||
<p>Use invariants.</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1094" target="_blank">
|
||||
increasing array
|
||||
</a>
|
||||
</h3>
|
||||
<p>
|
||||
Run through one iteration of the algorithm. Here, I erroneously
|
||||
added <code>x - last</code> to a quantity,
|
||||
<i>after manipulating <code>x</code></i
|
||||
>.
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1070/" target="_blank"
|
||||
>permutations</a
|
||||
>
|
||||
</h3>
|
||||
<p>
|
||||
I'd seen this problem before yet struggled.
|
||||
<b>Fully understand the problem constraints</b>. In this case, While
|
||||
I understood the definition of a permissible permutation, I didn't
|
||||
fully internalize that you could place number <i>wherever</i> you
|
||||
want. Instead, I was locked in on placing some <code>x</code> at
|
||||
<code>i, i + 2, i + 4, ...</code>. Further, the fact that I didn't
|
||||
immediately recognize this solution means I need to improve at
|
||||
<b>upsolving and reviewing problems</b>.
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1071" target="_blank"
|
||||
>permutations</a
|
||||
>
|
||||
</h3>
|
||||
<p>
|
||||
Absolutely disastrous. I continually just f*dged with the offsets I
|
||||
was adding to my strategy until I happened to get the answer right.
|
||||
<b>Don't guess</b>. Also,
|
||||
<b
|
||||
>don't be lazy—if an algorithm works, focus, write it out,
|
||||
and enjoy being correct</b
|
||||
>.
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1072" target="_blank"
|
||||
>two knights</a
|
||||
>
|
||||
</h3>
|
||||
<p>
|
||||
Required 2 hints from Sam Altman. <b>git gud at combinatorics</b>.
|
||||
Use the paradigm "count good, remove bad." Lock in less on counting
|
||||
specifics—instead, consider what objects
|
||||
<i>mean in aggregate</i>. In this case, a \(2\times3\) grid
|
||||
represents an "area" of attack, contributing 2 bad knight pairs.
|
||||
This is much easier to digest then attempting to remove overcounting
|
||||
per-knight. Fundamentally, the problem involves placing 2 knights,
|
||||
so breaking it down 2 knights at a time is the most intuitive take.
|
||||
</p>
|
||||
<h3>
|
||||
<a href="https://cses.fi/problemset/task/1092" target="_blank"
|
||||
>two sets</a
|
||||
>
|
||||
</h3>
|
||||
<p>
|
||||
<b>Don't lock in on one approach</b>. Here, this is dp. The fact
|
||||
that I knew the idea of partitioning the first \(n\) numbers into
|
||||
two groups of size \(\frac{n(n+1)}{4}\) but failed to recognize the
|
||||
greedy approach means I didn't grasp the fundamental arithmetic of
|
||||
the problem, nor the greedy idea: every number must go into a set.
|
||||
If you add the largest number possible to set 1 to not exceed the
|
||||
target, this number can always be formed in the other set by
|
||||
choosing \(1\) and \(x-1\). <b>git gud at greedy</b>.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1068" target="_blank"
|
||||
>weird algorithm</a
|
||||
>: Trivial, but I forgot to print 1 at the end.
|
||||
<b>Return the exactly correct answer.</b>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1083" target="_blank">
|
||||
missing number </a
|
||||
>: N/A
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1069" target="_blank">
|
||||
repetitions </a
|
||||
>: Use invariants.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1094" target="_blank">
|
||||
increasing array </a
|
||||
>: Run through one iteration of the algorithm. Here, I erroneously
|
||||
added <code>x - last</code> to a quantity,
|
||||
<i>after manipulating <code>x</code></i
|
||||
>.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1070/" target="_blank"
|
||||
>permutations</a
|
||||
>: I'd seen this problem before yet struggled.
|
||||
<b>Fully understand the problem constraints</b>. In this case,
|
||||
While I understood the definition of a permissible permutation, I
|
||||
didn't fully internalize that you could place number
|
||||
<i>wherever</i> you want. Instead, I was locked in on placing some
|
||||
<code>x</code> at <code>i, i + 2, i + 4, ...</code>. Further, the
|
||||
fact that I didn't immediately recognize this solution means I
|
||||
need to improve at <b>upsolving and reviewing problems</b>.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1071" target="_blank"
|
||||
>permutations</a
|
||||
>: Absolutely disastrous. I continually just f*dged with the
|
||||
offsets I was adding to my strategy until I happened to get the
|
||||
answer right. <b>Don't guess</b>. Also,
|
||||
<b
|
||||
>don't be lazy—if an algorithm works, focus, write it out,
|
||||
and enjoy being correct</b
|
||||
>.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1072" target="_blank"
|
||||
>two knights</a
|
||||
>: Required 2 hints from Sam Altman.
|
||||
<b>git gud at combinatorics</b>. Use the paradigm "count good,
|
||||
remove bad." Lock in less on counting specifics—instead,
|
||||
consider what objects <i>mean in aggregate</i>. In this case, a
|
||||
\(2\times3\) grid represents an "area" of attack, contributing 2
|
||||
bad knight pairs. This is much easier to digest then attempting to
|
||||
remove overcounting per-knight. Fundamentally, the problem
|
||||
involves placing 2 knights, so breaking it down 2 knights at a
|
||||
time is the most intuitive take.
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1092" target="_blank"
|
||||
>two sets</a
|
||||
>: <b>Don't lock in on one approach</b>. Here, this is dp. The
|
||||
fact that I knew the idea of partitioning the first \(n\) numbers
|
||||
into two groups of size \(\frac{n(n+1)}{4}\) but failed to
|
||||
recognize the greedy approach means I didn't grasp the fundamental
|
||||
arithmetic of the problem, nor the greedy idea: every number must
|
||||
go into a set. If you add the largest number possible to set 1 to
|
||||
not exceed the target, this number can always be formed in the
|
||||
other set by choosing \(1\) and \(x-1\). <b>git gud at greedy</b>.
|
||||
</li>
|
||||
</ul>
|
||||
<h2>more cses—22/2/2025</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/2205" target="_blank"
|
||||
>gray code</a
|
||||
>: Missed the pattern + <b>gave up too <i>late</i></b>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/2165" target="_blank"
|
||||
>towers of hanoi</a
|
||||
>: <b>Recursive grasp is limp</b>—missed the idea.
|
||||
<b>Math/proof grasp too</b>—still don't understand how its
|
||||
\(2^n\).
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/1623" target="_blank"
|
||||
>apple division</a
|
||||
>: I got distracted by the idea that it was NP-hard. Even when Sam
|
||||
Altman told me it was DP, I failed to simplify it to "add every
|
||||
element either to one or the other set".
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://cses.fi/problemset/task/2431">digit queries</a>:
|
||||
got the idea + time complexity quickly, but the
|
||||
<b>math-based implementation is weak</b>. Jumped into the code
|
||||
<i>before</i> outlining a strict plan.
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
</main>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue