第四题 暴力递归(40%) bool cmp(pair<int, int> &a, pair<int, int> &b) {     if (a.first == b.first)         return a.second > b.second;     else         return a.first > b.first; } void helper(vector<pair<int, int>> x, int max_weight, int height, int &res, int idx, int max_l) {     res = max(res, height);     if (idx == x.size())         return;     if (x[idx].first < max_l && x[idx].second <= max_weight) {         if (max_weight - x[idx].second < x[idx].second * 7)             helper(x, max_weight - x[idx].second, height + 1, res, idx + 1, x[idx].first);         else             helper(x, x[idx].second * 7, height + 1, res, idx + 1, x[idx].first);     }     helper(x, max_weight, height, res, idx + 1, max_l); } int main() {     int n;     cin >> n;     vector<int> L(n), W(n);     for (int i = 0; i < n; i++)         cin >> L[i];     for (int i = 0; i < n; i++)         cin >> W[i];     vector<pair<int, int>> x;     for (int i = 0; i < n; i++)         x.push_back(make_pair(L[i], W[i]));     sort(x.begin(), x.end(), cmp);     int res = 0;     helper(x, INT_MAX, 0, res, 0, INT_MAX);     cout << res << endl;     system("pause");     return 0; }
点赞 6

相关推荐

牛客网
牛客企业服务