levitational's blog

By levitational, history, 31 hour(s) ago, In English

List of DP Problems Having Short Statements (800 to 2200)

Long, wordy statements can be exhausting, especially for beginners. So here is a list of dynamic programming problems with short and easy-to-read statements, sorted by rating.

Notes: - Every problem here has a short statement (under about 1000 characters, input/output and samples not counted). - Within each rating, problems are listed in order of problem ID. - Ratings are as of April 2026 and may shift a little over time. - Short statement does not always mean an easy idea. Some of these are tricky!

800

  1. 702A — Maximum Increase (800)
  2. 1472B — Fair Division (800)

900

  1. 580A — Kefa and First Steps (900)
  2. 1462C — Unique Number (900)
  3. 1475B — New Year's Number (900)

1000

  1. 1182A — Filling Shapes (1000)

1100

  1. 313B — Ilya and Queries (1100)
  2. 363B — Fence (1100)
  3. 1899C — Yarik and Array (1100)

1300

  1. 58B — Coins (1300)
  2. 189A — Cut Ribbon (1300)
  3. 665C — Simple Strings (1300)
  4. 2033D — Kousuke's Assignment (1300)

1400

  1. 180C — Letter (1400)
  2. 414B — Mashmokh and Another Problem (1400)
  3. 489C — Given Length and Sum of Digits... (1400)
  4. 538B — Quasi Binary (1400)
  5. 797B — Odd sum (1400)
  6. 1215B — The Number of Products (1400)
  7. 1526B — I Hate 1111 (1400)

1500

  1. 22B — Bargaining Table (1500)
  2. 166E — Tetrahedron (1500)
  3. 455A — Boredom (1500)
  4. 550C — Divisibility by Eight (1500)
  5. 868C — Qualification Rounds (1500)
  6. 982C — Cut 'em all! (1500)
  7. 991D — Bishwock (1500)
  8. 1105C — Ayoub and Lost Array (1500)
  9. 1272D — Remove One Element (1500)

1600

  1. 219C — Color Stripe (1600)
  2. 597B — Restaurant (1600)
  3. 605A — Sorting Railway Cars (1600)
  4. 660C — Hard Process (1600)
  5. 888D — Almost Identity Permutations (1600)
  6. 1288C — Two Arrays (1600)
  7. 1295C — Obtain The String (1600)
  8. 1373D — Maximum Sum on Even Positions (1600)
  9. 1395C — Boboniu and Bit Operations (1600)
  10. 1398C — Good Subarrays (1600)
  11. 1513C — Add One (1600)
  12. 1519D — Maximum Sum of Products (1600)
  13. 1633D — Make Them Equal (1600)
  14. 1753B — Factorial Divisibility (1600)
  15. 1787C — Remove the Bracket (1600)

1700

  1. 349B — Color the Fence (1700)
  2. 466C — Number of Ways (1700)
  3. 546D — Soldier and Number Game (1700)
  4. 915C — Permute Digits (1700)
  5. 919D — Substring (1700)
  6. 977F — Consecutive Subsequence (1700)
  7. 1061C — Multiplicity (1700)
  8. 1497E1 — Square-free division (easy version) (1700)
  9. 1681D — Required Length (1700)
  10. 1695C — Zero Path (1700)
  11. 1829H — Don't Blame Me (1700)
  12. 1948D — Tandem Repeats? (1700)

1800

  1. 33B — String Problem (1800)
  2. 49D — Game (1800)
  3. 161D — Distance in Tree (1800)

1900

  1. 1114D — Flood Fill (1900)
  2. 1155D — Beautiful Array (1900)

2200

  1. 837D — Round Subset (2200)

If you know other DP problems with short statements, share them in the comments! Happy coding!

  • Vote: I like it
  • +28
  • Vote: I do not like it