Skip to main content

Posts

[ UVa ] 336 - A Node Too Far

গ্রাফ টি সবসময় connected নাও থাকতে পারে ।  সোর্স নোড টি মূল গ্রাফে নাও থাকতে পারে । সেই ক্ষেত্রে মূল গ্রাফে যতগুলি নোড আছে সেটা প্রিন্ট করতে হবে ।   TTL এর মান যত দেয়া থাকবে আমরা গ্রাফ কে ততো লেবেল পর্যন্ত সার্চ করে visited মার্ক করবে । এবং মোট নোড থেকে এই visited নোড কে বিয়োগ করে যেটা পাব সেটায় আমাদের প্রিন্ট করতে হবে ।  কোড :

[ UVa ] 750 - 8 Queens Chess Problem

আমরা এই সমস্যা তে যদি প্রথমেরই ৮ টা কুইনের জন্য সাম্ভাব সবগুলি অবস্থা হিসাব করে রাখি এবং পরে যেগুলো আমাদের কে প্রিন্ট করতে বলতেছে সেগুলো প্রিন্ট করি তবে খুব কম সময়ের মধ্যেই আমাদের প্রোগ্রাম রান করবে ।  কোড :

CPP তে map কে তার ভেলু অনুসারে কি ভাবে সর্ট করা যায় ।

আমরা জানি ম্যাপ ডিফল্ট ভাবে তার key অনুসারে অ্যাসেন্ডিং অর্ডারে সর্ট হয় । কিন্তু আমরা যদি key অনুসারে  সর্ট না করে value অনুসারে সর্ট করতে চাই তখন এই কাজটা কি ভাবে করা যায় আজকে আমরা সেটা দেখব ।    সাধারণ ভাবে ম্যাপ কে তার ভেলু অনুসারে সর্ট করা যায় না । ম্যাপ কে তার value অনুসারে সর্ট করার জন্য প্রথমে ম্যাপ  এর সবগুলো element [ key, value ] কে একটা vector এ কপি করে রাখতে হবে । এবং আমাদের কে সেই vector কে সর্ট করতে হবে । মনে করি আমাদের এই রকম একটা ম্যাপ আছে এবং তার মধ্যে এই ভেলুগুলো আছে । 1 2 3 4 5 map < string, int > mp; mp[ "ABC" ] = 10 ; mp[ "DEF" ] = 9 ; mp[ "GHI" ] = 5 ; ম্যাপের এই ডাটা গুলো কে আমরা একটা vector এ কপি করে রাখব । 1 2 3 4 5 6 vector < pair < string, int >> v; for ( auto it = mp.begin(); it != mp.end(); ++ it) { v.push_back( * it); // or we can use // v.push_back(make_pair(it->first, it->second));   } আমাদের ম্যাপের যেহেতু key, value দুইটা ভালু থাকে তাই এই দু...

[ UVa ] 1266 - Magic Square

Magic Square এমন একটি Square যার যেকোনো row, column, diagonal ভেলু গুলো যোগ করলে যোগফল সবসময় একই হবে ।  এই সমস্যা তে আমাদের কে Magic Square এ সাইজ দেয়া থাকবে প্রিন্ট করতে হবে Magic Square টি ।  Siamese (De la Loub`ere) method ব্যবহার করে এই সমস্যার সমাধান করা যায় ।  কোড :

[ UVa ] 11488 - Hyper Prefix Sets

আমাদের প্রথম ইনপুট দেয়া আছে { 0000, 0001, 10101, 010 } . এই সেটের প্রথম ২ টা থেকে ৩ টা করে নিলে আমরা যে Prefix পাব সেটাই আমাদের Prefix goodness . কারণ । ৩ * ২ = ৬ ।  Prefix Tree ব্যবহার করলে খুব সহজেই এই সমস্যা সমাধান করা যায় । কোড :

[ UVa ] 11463 - Commandos

এই সমস্যা টা মিনি-ম্যাক্স টাইপের সমস্যা ।  এই সমস্যা সমাধান করার জন্য প্রথমে আমাদের কে প্রত্যেক বিল্ডিং থেকে প্রত্যেক বিল্ডিং এ যাওয়ার মিনিমাম পাথ বের করতে হবে এই জন্য আমরা Floyd Warshall ব্যবহার করতে পারি ।  এর পর আমাদের কে যে source ও destination দেয়া থাকবে ।  আমরা প্রত্যেক বার source থেকে i হয়ে destination এ যেতে চেষ্টা করবে । যদি আমরা যতগুলি i ব্যবহার করে আমাদের লক্ষ্যে যেতে পারব তাদের মধ্যে যেটা ম্যাক্সিমাম সেটাই আমাদের কে প্রিন্ট করতে হবে ।   কোড :