নিম্নলিখিত গুগল কোড জ্যাম 1C প্রশ্নটি বিবেচনা করুন :
চীনের গ্রেট ওয়ালটি অসীম রেখা হিসাবে শুরু হবে, যেখানে সমস্ত অবস্থানের উচ্চতা ।
কয়েকটি উপজাতি , এন ≤ 1000 , নিম্নলিখিত প্যারামিটার অনুসারে প্রাচীরের দেয়ালে আক্রমণ করবে - একটি শুরুর দিন, ডি , একটি শুরুর শক্তি এস , একটি সূচনা পশ্চিম-স্থানাঙ্ক, ডাব্লু , এবং একটি সূচনা পূর্ব-সমন্বিত, ই । এই প্রথম আক্রমণটি শক্তিশালী এস এ , রেঞ্জ [ ডাব্লু , ই ] এর দিন ডি তে ঘটে । [ ডাব্লু , ই ] এর মধ্যে যদি প্রাচীরের কোনও অংশ থাকে তবে এর উচ্চতা < এস, আক্রমণটি সফল, এবং দিনের শেষে, প্রাচীরটি এমনভাবে তৈরি করা হবে যে উচ্চতার < S এর মধ্যে এর যে কোনও অংশটি S এর উচ্চতায় হবে S (বা আরও বেশি, যদি অন্য কোনও আক্রমণ হয়) day দিনটি একই অংশে আঘাত হ'ল শক্তি এস ′ > এস এর সাথে )
প্রতিটি উপজাতি পশ্চাদপসরণের পূর্বে আক্রমণ চালাবে এবং প্রতিটি আক্রমণ এর আগে একটি থেকে পুনরাবৃত্তভাবে নির্ধারিত হবে। প্রতিটি উপজাতির কিছু δ ডি , δ এক্স , এবং δ এস থাকে যা তাদের আক্রমণগুলির ক্রম নির্ধারণ করে: আক্রমণগুলির মধ্যে δ ডি ≥ 1 দিন অপেক্ষা করবে , তারা প্রতিটি আক্রমণে তাদের আক্রমণের সীমা δ এক্স ইউনিট স্থানান্তর করবে (নেতিবাচক = পশ্চিম, ইতিবাচক = পূর্ব), যদিও পরিসীমাটির আকার একই থাকবে, এবং প্রতিটি আক্রমণের পরেও তাদের শক্তি স্থির মান দ্বারা বৃদ্ধি / হ্রাস পাবে।
সমস্যাটির লক্ষ্য হ'ল আক্রমণকারী উপজাতিদের একটি সম্পূর্ণ বিবরণ দেওয়া, তাদের আক্রমণগুলি কতটি সফল হবে তা নির্ধারণ করুন।
আমি প্রায় 20 সেকেন্ডের মধ্যে দিয়ে চলতে পারে এমন একটি সমাধানের কোড পরিচালনা করতে পেরেছি: আমি বিশ্বাস করি যে আমার প্রয়োগ করা সমাধানটি সময় নেয়, যেখানে A = সিমুলেশনের মোট সংখ্যা (সর্বোচ্চ 1000000 ), এবং এক্স = আক্রমণ রেঞ্জের অনন্যতম পয়েন্টগুলির মোট সংখ্যা (সর্বোচ্চ 2000000) )।
উচ্চ স্তরে, আমার সমাধান:
- সমস্ত ট্রাইব তথ্য পড়ে
- আক্রমণ রেঞ্জের জন্য সমস্ত অনন্য স্থানাঙ্ক গণনা করে - ও ( এ )
- ন্যূনতম উচ্চতার মানগুলি অনুসরণ করে এমন ব্যাপ্তির উপরে ওয়ালটি অলস-আপডেট হওয়া বাইনারি গাছ হিসাবে প্রতিনিধিত্ব করে । একটি পাতা হ'ল দুটি এক্স স্থানাঙ্কের স্প্যান যা এর মধ্যে কিছুই থাকে না এবং সমস্ত প্যারেন্ট নোড তাদের বাচ্চাদের দ্বারা .াকা অবিচ্ছিন্ন বিরতি প্রতিনিধিত্ব করে। - ও ( এক্স লগ এক্স )
- প্রতিটি ট্রাইব সম্পাদন করবে এমন সমস্ত আক্রমণ তৈরি করে এবং দিনের বেলা বাছাই করে -
- প্রতিটি আক্রমণের জন্য, দেখুন এটি সফল হবে কিনা ( ক্যোয়ারির সময়)। যখন দিনটি পরিবর্তন হয়, সমস্ত অ-প্রক্রিয়াজাত সফল আক্রমণগুলির মধ্য দিয়ে লুপ করুন এবং সেই অনুযায়ী প্রাচীরটি আপডেট করুন ( প্রতিটি আক্রমণে লগ এক্স আপডেটের সময়)। - ও ( একটি লগ এক্স )
আমার প্রশ্নটি হ'ল চেয়ে আরও ভাল করার কোনও উপায় আছে ? সম্ভবত, উপজাতির ক্রমাগত আক্রমণগুলির রৈখিক প্রকৃতির সদ্ব্যবহার করার কোনও কৌশলগত উপায় আছে কি? 20 সেকেন্ডে একটি উদ্দিষ্ট সমাধানের জন্য খুব দীর্ঘ মনে হয় (যদিও এর জন্য জাভা দায়ী হতে পারে)।