快要 CSP-S2 了,複習一下一些演算法(弄文化課弄了好久了,很多東西都要忘了。。。
題目連結: Luogu P1094
看題,把購來的紀念品根據價格進行分組,但每組最多隻能包括兩件紀念品。看樣子,應該是貪心。每次取一個大的,一個小的,就可以保證了。如果大的小的組合起來,超過了最大值,就只取大的。
很容易就可以寫出程式。
1234567891011121314151617181920212223242526272829
#include <algorithm>#include <cstdio>#include <iostream>using namespace std;int ar[30001];int main() { int n, w; cin >> w >> n; for (int i = 0; i < n; i++) cin >> ar[i]; sort(ar, ar + n); int ans = 0; int l = 0; int r = n - 1; while (r >= l) { if (ar[l] + ar[r] <= w) { l++; r--; ans++; } else { r--; ans++; } } cout << ans; return 0;}
可以參考這個
能力有限,如有疏漏,請諒解並補充,謝謝。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。