section3-5.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // section35.cpp: 定义控制台应用程序的入口点。
  2. //
  3. #include"stdafx.h"
  4. #include<iostream>
  5. #include<vector>
  6. #include<algorithm>
  7. using namespace std;
  8. struct Wooden
  9. {
  10. int length;
  11. int weight;
  12. };
  13. bool compare(Wooden a, Wooden b) {
  14. return (a.length < b.length) && (a.weight < b.weight);
  15. }
  16. int calc(vector<Wooden> woodens) {
  17. int cost = 0;
  18. int size = woodens.size();
  19. int index = 0;
  20. for (; size != 0; ) {
  21. if (size == 1) {
  22. cost++;
  23. break;
  24. }
  25. sort(woodens.begin(), woodens.end(), compare);
  26. Wooden node = woodens[0];
  27. for (int i = 1; i < size; i++) {
  28. if (woodens.at(i).length < node.length || woodens.at(i).weight < node.weight) {
  29. woodens.erase(woodens.begin());
  30. break;
  31. }
  32. woodens.erase(woodens.begin() + i);
  33. size = woodens.size();
  34. }
  35. }
  36. return cost;
  37. }
  38. int main()
  39. {
  40. int T, n;
  41. vector<Wooden> woodens;
  42. int l, w;
  43. while (cin >> T) {
  44. for (int i = 0; i < T; i++) {
  45. cin >> n;
  46. for (int j = 0; j < n; j++) {
  47. cin >> l >> w;
  48. woodens.push_back(Wooden{ l,w });
  49. }
  50. cout << calc(woodens) << endl;
  51. woodens.clear();
  52. }
  53. }
  54. return 0;
  55. }