Problem Description here এই প্রব্লেমটি আমার তৈরী করা একটি প্রব্লেম যেটি মূলত Intra CoU Programming Contest 2020 এর জন্য সেট করা। এই প্রব্লেম সলভ করতে যা যা জানা দরকার তা হলোঃ Sparse Table , Segment Tree , DFS , Binary Search প্রব্লেমঃ প্রব্লেমটিতে বলা হয়েছে n সাইজের একটি ট্রি দেয়া থাকবে যার প্রতি নোডে কিছু ফুল আছে। এখন, তোমাকে q টা কুয়েরী এন্সার করতে হবে। কুয়েরী আবার দুই ধরণের হতে পারে। ১) u v x v থেকে u এর দিকে সর্বনিম্ন কয়টা নোড ভিজিট করে কমপক্ষে x সংখ্যক ফুল কালেক্ট করা যায় তা বের করতে হবে যেখানে u হচ্ছে v এর এন্সেস্টর(পূর্বসুরী) । ২) u y u নোডের ফুল সংখ্যা আপডেট করতে হবে। y পজিটিভ হলে যোগ হবে, নেগেটিভ হলে বিয়োগ। হিন্টসঃ ১) স্পার্স টেবিল ডাটা স্ট্রাকচার শিখে থাকলে এখন তুমি একটি ট্রি এর প্রতিটি নোডের জন্য এর kth প্যারেন্ট বের করতে পারবে নিশ্চয়ই! এর জন্য তোমার log(n) কমপ্লেক্সিটি লাগবে। ২) প্রব্লেমে একটা ব্যাপার লক্ষ্য করেছো কি?...
একটি সংখ্যা x কে ০ না হওয়া পর্যন্ত সর্বোচ্চ কতবার অন্য একটি পজিটিভ সংখ্যা(যা ঐ সংখ্যার সমান অথবা ছোট) দ্বারা মড করা যায়? মনে করি, x = 16 এখন, x কে কোন সংখ্যা দ্বারা ভাগ করলে ভাগশেষ সব থেকে বড় হয়? 9 দ্বারা। তাহলে, x = 16%9 = 7 এখন, x কে কোন সংখ্যা দ্বারা ভাগ করলে ভাগশেষ সব থেকে বড় হয়? 4 দ্বারা। তাহলে, x = 7%4 = 3 এখন, x কে কোন সংখ্যা দ্বারা ভাগ করলে ভাগশেষ সব থেকে বড় হয়? 2 দ্বারা। তাহলে, x = 3%2 = 1 এখন, x কে কোন সংখ্যা দ্বারা ভাগ করলে ভাগশেষ সব থেকে বড় হয়? 1 দ্বারা। তাহলে, x = 1%1 = 0 ভালোভাবে লক্ষ্য করলে দেখবে যে, প্রতি মডেই সংখ্যাটি অর্ধেক এর থেকেও ছোট হয়ে যাচ্ছে! তার মানে, একটি সংখ্যাকে ০ না হওয়া পর্যন্ত আমি সর্বোচ্চ Log(X) বার ভাগ করতে পারি! বলে রাখা ভালো এখানে Log এর বেইস ২। এই অবজার্বেশন অনেক সময় বিভিন্ন প্রব্লেমের সাবপ্রব্লেম সলভ করা সহজ করে দেয়। Happy Coding😀
ভেক্টরঃ ভেক্টর হচ্ছে এক প্রকার ডায়নামিক অ্যারে । অর্থাৎ, এটি অটোমেটিক্যালি রিসাইজ হবে যখনই আমরা এখানে কোন ইলিমেন্ট ইনসার্ট কিংবা ইরেজ করবো । অ্যারে তে আমরা আগে থেকেই সাইজ ডিক্লেয়ার করে থাকি , কিন্তু ভেক্টর এর কিছু বিশেষ সুবিধা হলো আগে থেকে সাইজ ডিক্লেয়ার করার দরকার হয় না, বর্তমানে কয়টা ইলিমেন্ট আছে তা কোন কাউন্টার ভ্যারিয়েবল ছাড়াই জানা যায় , যে কোন পজিশনে ইলিমেন্ট ইনসার্ট করা যায়,ডিলিট করা যায় , খুব সহজে একটা সম্পূর্ণ ভেক্টর অন্য ভেক্টরে ইনসার্ট করা যায়। কিভাবে ডিক্লেয়ার করবো? ডাটা ইরেজ করাঃ ইটারেটর এর মাধ্যমে ডাটা এক্সেস এবং ভেক্টর ক্লিয়ার করাঃ ভেক্টর সরাসরি অ্যারের মতো করে এক্সেস করা গেলেও অন্যান্য STL এভাবে এক্সেস করা যায় না। সেক্ষেত্রে, ডাটা এক্সেস এর জন্য ইটারেটর এর প্রয়োজন হয় নিচের ছবির মতো করেঃ সরাসরি n তম পজিশনে ডাটা ইনসার্ট বা ইরেজ করাঃ মনে রাখা শ্রেয় যে, এক্ষেত্রে কমপ্লেক্সিটি O(n) হবে। একটি ভেক্টরের মধ্যে আরেকটি ভেক্টর ইনসার্ট করা , দুটি ভেক্টর...
Comments
Post a Comment