c0, c1, h এবং বাইনারি স্ট্রিং S দেওয়া আছে। বিট ফ্লিপ করার খরচ h। ০ কেনার খরচ c0, ১ কেনার খরচ c1। স্ট্রিং কেনার ন্যূনতম খরচ বের করুন।
উদাহরণ
c0=10, c1=100, h=1, S="01010" → আউটপুট: ৫২
২য় ও ৪র্থ বিট ফ্লিপ (খরচ ২), স্ট্রিং "00000"। ৫×১০=৫০। মোট ৫২।
সমাধানের ধাপসমূহ
প্রতিটি বিটের জন্য: '0' হলে min(c0, c1+h), '1' হলে min(c0+h, c1) যোগ করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(int c0, int c1, int h, string S) {
int k = 0, n = S.size();
for (int i = 0; i < n; i++) {
if (S[i] == '0') k += min(c0, c1 + h);
else k += min(c0 + h, c1);
}
return k;
}
int main() {
int c0 = 10, c1 = 100, h = 1;
string S = "01010";
cout << solve(c0, c1, h, S) << endl;
return 0;
}
ইনপুট
10, 100, 1, "01010"
আউটপুট
52