Level 11 — Hard Mixed CP Patterns (boss level)¶
⚠️ আগে পড়ো: level 10-এর মতো এই level-ও big-tech interview-এর জন্য optional — competitive programming-এর জন্য deep material। Interview-পথে থাকলে নির্দ্বিধায় মূল DS topic গুলোতে (02-13) চলে যাও; সেগুলো শেষ করার পরে এখানে ফিরলে বরং বেশি মজা পাবে — কারণ এই level-এর অনেক pattern (probability DP, counting DP) DP শেখার পরে অর্ধেক ফ্রি হয়ে যায়।
এই level এ কী শিখবে?¶
এটা math fundamentals-এর শেষ স্টেশন — যেখানে আগের 11টা level-এর hatiyar গুলো মিশে নতুন pattern তৈরি করে। আলাদা আলাদা কোনো একটা theorem নয়; এখানে শেখার জিনিস হলো চিন্তার ছাঁচ — কীভাবে একটা অসম্ভব-দেখতে problem-কে চেনা টুকরোয় ভাঙতে হয়।
মূল idea গুলো:
- Meet in the middle — 2⁴⁰ অসম্ভব, কিন্তু দুটো 2²⁰ + sort/match সম্ভব; brute force-কে মাঝখানে ভেঙে দুই দিক থেকে আসা
- Ternary search — unimodal function (একটাই চূড়া) এ পাহাড়ের চূড়া খোঁজা; binary search-এর ভাই
- Game theory W/L labeling — শেষ অবস্থা থেকে পেছনে হেঁটে প্রতিটা position-এ Win/Lose ট্যাগ
- Nim XOR theorem — সব pile-এর XOR ≠ 0 হলে প্রথম player জেতে; pairing intuition-এ প্রমাণ
- Grundy number — যেকোনো impartial game-এর "Nim-মান"; mex of next states, একাধিক game-এর XOR
- Expected value linearity — expectation যোগে ভাঙা যায়, ঘটনা dependent হলেও! Dice আর coupon collector
- Probability DP — state-এ probability/expectation বয়ে নিয়ে চলা
- Burnside lemma — symmetry-র নিচে গোনা: "average fixed points"; necklace counting-এর জাদু
- Matrix power on graphs — adjacency matrix-এর k-তম power = length-k path count (level 10-এর 131 ফিরে এলো)
- Hard inclusion-exclusion — forbidden property-র উপর IE; derangement আবার, এবার বড় মঞ্চে
- Counting DP — Catalan-ঘরানার গোনা; "কয়টা উপায়ে" প্রশ্নের DP উত্তর
- Constructive — উত্তর নিজে বানাও, আর invariant/parity দিয়ে "impossible" প্রমাণ করো
কেন এই level দরকার?¶
Competitive programming (CP) এ: এটাই Codeforces Div 2 D/E/F-এর মূল খাদ্য। Constructive tag-এ হাজার হাজার problem; game theory আর expected value নিয়মিত অতিথি; আর meet in the middle জানা-না-জানায় কিছু problem-এ TLE আর AC-র ফারাক।
Interview এ: সরাসরি প্রায় আসে না — তবে দুটো ব্যতিক্রম: expected value-র linearity (probability question-এ) আর counting DP (climbing stairs-ঘরানার "কয় উপায়ে" প্রশ্নে) — এ দুটো common interview pattern-এর সাথে আত্মীয়তা রাখে। বাকিটা CP-র সম্পদ।
পরের পথে: এই level শেষ মানে math fundamentals সম্পূর্ণ। Bitmask-ভিত্তিক meet in the middle-এর শিকড় ../04-bit-manipulation/-এ, আর probability DP / counting DP-র পূর্ণ রূপ অপেক্ষা করছে ../../12-dynamic-programming/-এ — সেখানে গেলে এই level-এর problem গুলো নতুন চোখে দেখো।
Prerequisites¶
- Level 0-10 (অন্তত 0-8 শক্তভাবে; 10-এর 131 লাগবে 147-এ)
- Level 3-এর combinatorics — inclusion-exclusion (044), derangement (050), Catalan-এর সাথে পরিচয় (049)
- Level 4-এর bitmask subset enumeration (047, 062) — meet in the middle-এর কাঁচামাল (
../04-bit-manipulation/) - Level 4-এর XOR অভ্যাস (060) — Nim-এ লাগবে
- Probability-র বেসিক (level 3-এর 052) — expected value-র জন্য
- Recursion-এ আত্মবিশ্বাস — game state explore করতে হবে
Learning goals (checklist)¶
এই level শেষে নিজেকে জিজ্ঞেস করো:
- [ ] Meet in the middle কখন প্রয়োগযোগ্য (n ≈ 40-এর subset ঘরানা) — চিনতে পারি, আর দুই অর্ধেক merge-এর কৌশল জানি
- [ ] Ternary search-এর শর্ত (unimodal) আর binary search-এর সাথে পার্থক্য বলতে পারি
- [ ] একটা ছোট game-এর W/L table পেছন থেকে ভরতে পারি
- [ ] Nim-এ XOR ≠ 0 → winning — এই theorem-টা একটা ছোট উদাহরণে খেলে দেখাতে পারি
- [ ] Grundy number-এর সংজ্ঞা (mex of next states) আর games-এর XOR rule জানি
- [ ] Linearity of expectation-এর সবচেয়ে বড় চমক — dependence লাগে না — একটা উদাহরণে ব্যবহার করেছি
- [ ] Burnside-এর n=3 necklace উদাহরণটা (8+2+2)/3 = 4 — হাতে গুনে মিলিয়েছি
- [ ] Adjacency matrix-এর square-এ কেন path count আসে — গুণের সংজ্ঞা খুলে দেখাতে পারি
- [ ] Constructive problem-এ "impossible" দাবি করার আগে কোন invariant খুঁজি — অন্তত দুটো (parity, sum) জানি
Problem list¶
মোট 12টা problem — 4টা Medium, 8টা Hard।
Medium¶
| # | Problem | Pattern | Source |
|---|---|---|---|
| 140 | Ternary Search | unimodal | CP-Algorithms — https://cp-algorithms.com/num_methods/ternary_search.html |
| 141 | Game Theory Basics | W/L labeling | CP-Algorithms — https://cp-algorithms.com/game_theory/sprague-grundy-nim.html |
| 142 | Nim Game | XOR theorem | LeetCode Nim Game — https://leetcode.com/problems/nim-game/, CP-Algorithms sprague-grundy page |
| 144 | Expected Value Problems | linearity | Classic probability |
Hard¶
| # | Problem | Pattern | Source |
|---|---|---|---|
| 139 | Meet in the Middle | split + merge | CSES Meet in the Middle — https://cses.fi/problemset/task/1628 |
| 143 | Grundy Number Intro | mex + XOR | CP-Algorithms sprague-grundy page |
| 145 | Probability DP | probability state | Classic CP pattern (USACO Guide — https://usaco.guide/) |
| 146 | Burnside Lemma Intro | average fixed points | CP-Algorithms — https://cp-algorithms.com/combinatorics/burnside.html |
| 147 | Matrix Power on Graphs | path counting | Classic CP technique |
| 148 | Inclusion-Exclusion Hard | forbidden properties | CP-Algorithms — https://cp-algorithms.com/combinatorics/inclusion-exclusion.html |
| 149 | Combinatorics with DP | counting DP | CSES Counting Problems (https://cses.fi/problemset/) |
| 150 | Constructive Math Problems | build + invariant | Codeforces constructive tag — https://codeforces.com/problemset?tags=constructive+algorithms |
পুরো tracker table (status সহ) আছে problems/README.md-তে।
Recommended order¶
- 139 → 140 — search-ঘরানার দুটো দিয়ে warmup: ভাঙো-মেলাও আর চূড়া-খোঁজা
- 141 → 142 → 143 — game theory trilogy: W/L labeling → Nim XOR → Grundy; এই ক্রমেই, লাফিয়ো না
- 144 → 145 — probability জোড়া: আগে linearity-র জাদু, তারপর DP-তে probability বওয়া
- 146 — Burnside; একদম আলাদা স্বাদ, fresh মাথায় বোসো
- 147 — level 10-এর matrix exponentiation-এর graph-রূপ
- 148 → 149 — counting জোড়া: hard IE তারপর counting DP
- 150 — শেষ boss: constructive; এতদিনের সব invariant-চিন্তা এখানে কাজে লাগবে
Common mistakes (সাধারণ ভুল)¶
- Meet in the middle-এ merge-এর খরচ ভুলে যাওয়া — দুই অর্ধেক বানানো 2^(n/2), কিন্তু match করতে sort + binary search / two pointer না করলে আবার 2^n-এ ফিরে যাবে।
- Ternary search-কে non-unimodal function-এ চালানো — একাধিক চূড়া থাকলে ternary search ভুল চূড়ায় আটকাবে; আগে unimodality-র যুক্তি দাও।
- Game theory-তে "greedy move" ভাবা — game-এ locally ভালো চাল মানেই জেতা নয়; W/L definition recursive — "এমন একটা চাল আছে যা opponent-কে L-এ ফেলে"।
- Nim-এ XOR-এর বদলে sum দেখা — pile-এর যোগফল কিছুই বলে না; XOR-ই একমাত্র সত্য। আর misère variant (শেষ পাথর নিলে হার) আলাদা নিয়ম — গুলিয়ো না।
- Grundy-তে mex ভুল করা — mex মানে minimum excludant: set-এ নেই এমন ক্ষুদ্রতম অঋণাত্মক integer; min নয়, max-ও নয়।
- Expected value-তে independence খোঁজা — linearity-র জন্য independence লাগে না; এটা ভুলে গিয়ে অনেকে সহজ problem-কে কঠিন বানিয়ে ফেলে।
- Burnside-এ identity rotation বাদ দেওয়া — identity-ও একটা group element, আর সে সব coloring fix করে; তাকে বাদ দিলে উত্তর ভুল।
- Matrix power-এ path আর walk গুলিয়ে ফেলা — A^k গোনে length-k walk (vertex repeat হতে পারে); simple path চাইলে এ পথ নয়।
- Constructive-এ একটা case-এ আটকে general claim করা — n = 4-এ পারোনি মানেই impossible না; impossible বলতে হলে invariant-প্রমাণ লাগবে, না পারলে আরো খোঁজো।
- IE-তে sign-এর হিসাব হারানো — k-টা property-র intersection-এ sign (−1)^k; term গোনার আগে sign-এর pattern-টা ছোট case-এ লিখে নাও।
পরের level এ যাওয়ার আগে checklist¶
এটাই শেষ level — তাই checklist-টা একটু "graduation exam"-ধাঁচের:
- [ ] 12টা problem-ই অন্তত একবার নিজে solve করেছি
- [ ] Meet in the middle-এর subset sum version-টা scratch থেকে লিখতে পারি
- [ ] 1-pile, 2-pile Nim-এর W/L table নিজে বানিয়ে XOR theorem-এর সাথে মিলিয়েছি
- [ ] Grundy দিয়ে একটা ছোট নিজের-বানানো game analyze করেছি
- [ ] Coupon collector-এর expected value linearity দিয়ে বের করেছি
- [ ] Burnside-এর necklace উদাহরণ না দেখে কাউকে বুঝিয়েছি
- [ ] একটা Codeforces constructive problem-এ অন্তত 45 মিনিট নিজে লড়েছি
- [ ] পেছনে তাকিয়ে level 0-এর problem গুলো দেখে হেসেছি
সব টিক দিতে পারলে — math fundamentals সম্পূর্ণ! এবার মূল data structures-এর পথে: arrays থেকে শুরু (../../02-arrays-and-strings/), আর এই level-এর অসমাপ্ত প্রেম (probability DP, counting DP) পূর্ণতা পাবে ../../12-dynamic-programming/-এ।
Source map¶
এই folder-এর প্রতিটা concept আর problem কোথা থেকে এসেছে, কোন link official, আর কোনটা original লেখা — সব হিসাব আছে source-map.md-তে।