สมมุติว่าเรากำลังทำการทดลองทางฟิสิกส์ เราได้รับค่า n คู่และค่าเกณฑ์ k ค่าแรกของคู่แต่ละค่าจะถูกบวกเข้ากับมูลค่ารวม และค่าที่สองของคู่เงินจะถูกบวกเข้ากับมูลค่ารวมอีกค่าหนึ่งด้วย ตอนนี้ เราตรวจสอบว่ามูลค่ารวมเป็นค่าต่ำสุดหรือค่า (k - ผลรวม) เป็นค่าต่ำสุด เราทำสิ่งนี้สำหรับทั้งผลรวมแล้วเพิ่มและพิมพ์ผลลัพธ์
ดังนั้น หากอินพุตเป็น n =4, k =20, ค่า ={{3, 5}, {4, 3}, {2, 1}, {4, 4}} ผลลัพธ์จะเป็น 14
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
a := 0, b = 0 for initialize i := 0, when i < n, update (increase i by 1), do: a := a + first value of values[i] b := b + second value of values[i] print(min((a, k - a) + minimum of b and k - b))
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; #define N 100 void solve(int n, int k, vector<pair<int,int>> values) { int a = 0, b = 0; for(int i = 0; i < n; i++){ a += values[i].first; b += values[i].second; } cout<<min(a, k - a) + min(b, k - b); } int main() { int n = 4, k = 20; vector<pair<int,int>> values = {{3, 5}, {4, 3}, {2, 1}, {4, 4}}; solve(n, k, values); return 0; }
อินพุต
4, 20, {{3, 5}, {4, 3}, {2, 1}, {4, 4}}
ผลลัพธ์
14