ধরুন, আমাদেরকে h x w মাত্রার একটি গ্রিড দেওয়া হয়েছে। গ্রিডের প্রতিটি কক্ষে কিছু ধনাত্মক পূর্ণসংখ্যা থাকে। এখন একটি নির্দিষ্ট কক্ষে (p, q) একটি পাথ-ফাইন্ডিং রোবট স্থাপন করা হয়েছে (যেখানে p হল সারি নম্বর এবং q হল একটি ঘরের কলাম সংখ্যা) এবং এটিকে (i, j) ঘরে সরানো যেতে পারে। একটি মুভ অপারেশনের একটি নির্দিষ্ট খরচ থাকে, যা |p - i| এর সমান + |q - j|। এখন কিউ সংখ্যক ট্রিপ রয়েছে, যার নিম্নলিখিত বৈশিষ্ট্য রয়েছে।
-
প্রতিটি ট্রিপের দুটি মান আছে (x, y) এবং একটি সাধারণ মান d আছে।
-
একটি রোবটকে x মান বিশিষ্ট একটি কক্ষে স্থাপন করা হয়, তারপর x + d মান সহ অন্য একটি ঘরে চলে যায়।
-
তারপর এটি x + d + d মান সহ অন্য ঘরে চলে যায়। এই প্রক্রিয়াটি চলতে থাকবে যতক্ষণ না রোবট এমন একটি কক্ষে পৌঁছায় যার মান y এর চেয়ে বেশি বা সমান।
-
y - x হল d এর গুণিতক।
ভ্রমণের পরিপ্রেক্ষিতে, আমাদের প্রতিটি ভ্রমণের মোট খরচ খুঁজে বের করতে হবে। রোবট নড়াচড়া করতে না পারলে, ট্রিপ খরচ 0।
সুতরাং, যদি ইনপুট হয় h =3, w =3, d =3, q =1, গ্রিড ={{2, 6, 8}, {7, 3, 4}, {5, 1, 9}} , trips ={{3, 9}}, তাহলে আউটপুট হবে 4.
3 কক্ষে (2, 2)
6 কক্ষে রয়েছে (1, 2)
9 কক্ষে রয়েছে (3, 3)
মোট খরচ =|(1 - 2) + (2 - 2) | + |(3 - 1) + (3 - 2)| =4.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
শুরু করার জন্য একটি মানচিত্রের লোককে সংজ্ঞায়িত করুন i :=0, যখন iআরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#includeনেমস্পেস ব্যবহার করে std;const int INF =1e9;void solve(int h, int w, int d, int q, vector > grid,vector > ট্রিপ) { মানচিত্র > loc; জন্য (int i =0; i dp[d + 1]; জন্য (int i =1; i <=d; i++) { int j =i; যখন (j w * h) বিরতি; int dx =abs(loc[n].first - loc[j].first); int dy =abs(loc[n].second - loc[j].second); j +=d; dp[i].push_back(dx + dy); } এর জন্য (j =1; j > গ্রিড ={{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}; ভেক্টর > trips ={{3, 9}}; সমাধান (h, w, d, q, grid, trips); রিটার্ন 0;
ইনপুট
3, 3, 3, 1, {{2, 6, 8}, {7, 3, 4}, {5, 1, 9}}, {{3, 9}}
আউটপুট
4