Problem: এই প্রব্লেমে আমাদের একটি অ্যারে দেয়া থাকবে n সাইজের এবং q সংখ্যক কুয়েরী এন্সার করতে হবে। দুই ধরনের কুয়েরী থাকবে। 1 L R অ্যারের L to R index পর্যন্ত সংখ্যাগুলোর GCD বের করতে হবে। 2 pos x অ্যারের pos তম পজিশনের ভ্যালু x বাড়িয়ে দাও। Solution: সেগমেন্ট ট্রি এর রেঞ্জ কুয়েরী এবং পয়েন্ট আপডেট সম্পর্কে ধারনা থাকলেই এই প্রব্লেম সলভ করা সম্ভব। তাই বিস্তারিত আলোচনা না করে সরাসরি কোডে যাচ্ছিঃ Suggested problem Happy Coding
See the problem description - Here প্রব্লেম বুঝে থাকলে প্রথমে ১ টি টেবিল দেখে নেয়া যাকঃ আমাদের কে একটি অ্যারে দেয়া আছে ara[] = {-3 , -2 , -1 , 1 , 2 , 3} টেবিলের ১ম সারি হলো মূল অ্যারে (উল্লেখ্য অ্যারের সাইজ ৬। মূল অ্যারে টা কে ২বার রিপিট করা হয়েছে সলুশন এর সুবিধার্থে) । ২য় সারি হলো মূল অ্যারের কিউমুলেটিভ সাম যা ০ সাইক্লিক শিফট এর জন্য কাজ করে। এই সারির ১ থেকে ৬ ইন্ডেক্স পর্যন্ত সাম অ্যারের ইলিমেন্ট গুলোর মধ্যে মিনিমাম টা ০ থেকে বড় হলে, ০ সাইক্লিক শিফট শর্ত মেনেছে এন্সার ১ বাড়ানো হবে। ৩য় সারি হলো ২য় ইলিমেন্ট থেকে বানানো কিউমুলেটিভ সাম। এই সারির ২ থেকে ৭ ইনডেক্স পর্যন্ত সাম অ্যারের ইলিমেন্ট গুলোর মধ্যে মিনিমাম টা ০ থেকে বড় হলে, ১ সাইক্লিক শিফট শর্ত মেনেছে। এন্সার ১ বাড়ানো হবে। (উল্লেখ্য এই সারিতে ১ নম্বর ইনডেক্স এর ঘর খালি রাখা হয়েছে)। এভাবে ৬ সাইজের একটা অ্যারের জন্য ০ থেকে ৫ পর্যন্ত সাইক্লিক শিফট বের করে কয়টা সাইক্লিক শিফট এর মিনিমাম ভ্যালু ০ থেকে বড় সেটাই এই প্রব্লেমে বের করতে বলা হয়েছে। এখন, এভাবে প্রত্যেক সাইক্লিক শিফট এর জন্য সাম জেনা...
Problem Description here Problem: এই প্রব্লেমে আমাদেরকে একটি ইন্টিজার অ্যারে দেয়া থাকবে যেখানে দুটি সংখ্যা ব্যাতিত বাকি সংখ্যাগুলো দুইবার করে থাকবে এবং ঐ দুটি সংখ্যা একবার করে থাকবে। বলতে হবে সংখ্যা দুটি কি কি? আমাদেরকে এই কাজ O(n) Time Complexity এবং O(1) Memory Complexity তে করতে হবে। Solution: আমরা জানি, একই সংখ্যাকে জোড় সংখ্যক বার এক্সর করলে ফলাফল শূন্য হয়। ধরে নেই, অ্যারেতে একবার করে থাকা সংখ্যা দুটি x এবং y । তাহলে, z = a[1] ^ a[2] ^ ... ^ a[n] = x ^ y এখন, যেহেতু সংখ্যা দুটি একবার করে আছে তার মানে x এবং y দুটি ভিন্ন সংখ্যা! সুতরাং, তাদের এক্সর করলে অন্তত এমন একটি বিট থাকবে যে বিট সংখ্যাদ্বয়ের মধ্যে তফাৎ গড়ে দিবে! তাই, z = x ^ y হলে z এর সর্বডানের কোন বিট টি অন আছে সেটি দেখবো। মনে করি, z = x^y এর সর্বডানের অন বিট টি হলো kth Bit এখন, তাহলে অ্যারের যেসব সংখ্যার kth Bit অন তাদের এক্সর করলে সেটি হবে দুটির সংখ্যার একটি সংখ্যা x । কারণ , x ভিন্ন অন্য কোন সংখ্যার kth Bit ON থাকলেও সেটি দুইবার থাকবে যেকারণে সেখানে শুধু x ই থেকে যাবে। এখন অপর সংখ্যা y...
Comments
Post a Comment