我也用的回溯,做了一些剪枝,但还是9%通过 int n, k; int ret = 0; vector<int> group; void Loop(const vector<Info> &infos, int i, int m) { if (group.size() + n - m - 1 < k) return; if (i == k) { int a_sum = 0, b_min = -1; for (int j = 0; j < k; ++j) { a_sum += infos[group[j]].a; if (b_min == -1) b_min = infos[group[j]].b; else b_min = min(b_min, infos[group[j]].b); } ret = max(ret, a_sum * b_min); return; } for (int j = m + 1; j < n; ++j) { group.push_back(j); Loop(infos, i + 1, j); group.pop_back(); } }
点赞 3

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务