fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int main() {
  6. ios::sync_with_stdio(false);
  7. cin.tie(nullptr);
  8.  
  9. int T;
  10. cin >> T;
  11. while (T--) {
  12. int n;
  13. cin >> n;
  14. vector<int> s(n);
  15. int cnt0 = 0, cnt1 = 0, cnt2 = 0;
  16. for (int i = 0; i < n; ++i) {
  17. cin >> s[i];
  18. if (s[i] == 0) cnt0++;
  19. else if (s[i] == 1) cnt1++;
  20. else cnt2++;
  21. }
  22. int a, b, c; // a是Alice的0的数量,b是1的数量,c是2的数量
  23. cin >> a >> b >> c;
  24.  
  25. int res = 0;
  26. // 修正匹配顺序:按克制关系合理匹配,避免资源浪费
  27. // 0克2,1克0,2克1
  28. res += min(a, cnt2); // 先用0克制2
  29. a -= min(a, cnt2);
  30. cnt2 -= min(a + min(a, cnt2), cnt2); // 更新剩余的2
  31.  
  32. res += min(b, cnt0); // 再用1克制0
  33. b -= min(b, cnt0);
  34. cnt0 -= min(b + min(b, cnt0), cnt0); // 更新剩余的0
  35.  
  36. res += min(c, cnt1); // 最后用2克制1
  37.  
  38. cout << res << '\n';
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 5280KB
stdin
3
5
01201
221
3
222
300
4
0122
112
stdout
4
5
5