Kacam.net

Algorithms

贪心:过了样例不等于对

唯一一类跑过样例仍然可能彻底错的算法。

Copy the prompt, then pick a model. It plays the interviewer and asks you through it scene by scene instead of handing you the answer.

On a phone with the app installed, the system opens the app directly. Links cannot open external apps inside WeChat — open it in a browser first.

The copied text ends with the answer key the model grades you against. Don't read it yourself first — working it out on your own is the point.

贪心的正确性从来不是显然的:要么证明,要么被反例推翻,没有第三种状态。而贪心的反例往往需要三个以上元素、数值有意设计 —— 随手举的例子几乎必然通过,这就是它危险的地方。

这一份练两个工具:交换论证(假设有更好的解,把它第一处不同换成贪心的选择,证明不会变差)和构造反例。一说「我试了几个例子都对」就会被打断。

中间会拿两道长得几乎一样的题对照:活动选择贪心是对的,0/1 背包贪心是错的 —— 差在哪。

★★★★☆ · about 35 min · Tests: 交换论证、构造反例、和 DP 的分界

What this one drills

Proving correctness State design

Have you done this one?

Sign in to mark this one as practised — next time you come back you'll see when you did it.

Notes from people who did this one

Nobody has written yet. After you run it, say what came out of the conversation — which scene stumped you, which conclusion you changed afterwards.

Sign in to write a note.

How to use this

This set teaches rather than interrogates: it guides you instead of pressing until you have nothing left to say. When you're stuck it first asks which layer you're stuck at (never heard of it / know it but not why / know why but can't write it), then decides what to give. Only after guiding you twice on the same point will it spell the answer out — and then it asks you to say it back in your own words.

How to start

  1. Pick one, open it, copy the prompt.
  2. Paste it into a brand-new conversation, say nothing, and wait for its first question.
  3. Trace by hand before you write code — it will interrupt you. Walking through an array of length 2 beats writing the template ten times.

Four commands you can call out at any time

  • 跳过 move to the next scene now
  • 换个说法 explain this bit again from another angle
  • 直说吧 spell the answer out, then make me say it back
  • 复盘 jump to the wrap-up and print the review card

Three traps

  • Don't read the answer key at the end first — that "how people get it wrong" section is the answer to every question it will ask you.
  • Don't rush to code. With algorithms, writing code is the easiest way to hide the fact that you haven't actually thought it through.
  • When it starts praising you, point it back to the "don't praise me" rule. Guiding is not coddling.

Can't come up with a solution? Start with defining the DP state. Always off by one? Binary search and prefix sums. Can't recognise the shape of a problem? Monotonic stack and sliding window. The complexity one underpins several others — do it early.