注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
一个是在xy坐标上,从(0,0)开始走,只能走右上,右侧 和 右下,多少unique path到 点(n,m)。。大家多给我加米呀,加米不消耗米
- #include <iostream>
- #include <vector>
- #include <map>
- #include <algorithm>
- using namespace std;
- //选不重叠区间,value加和最大
- int helper(vector<vector<int>>& nums) {
- map<int, int> m; //end, sum
- sort(nums.begin(), nums.end(), [](const vector<int>& a1, const vector<int>& a2) {
- return a1[1] < a2[1];
- });
- for (auto i : nums) {
- auto ii = m.upper_bound(i[0]);
- int last = 0;
- if (ii != m.begin()) {
- last = prev(ii)->second;
- }
- if (m.count(i[1]) == 0 || last + i[2] > m[i[1]])
- m[i[1]] = last + i[2];
- }
- return prev(m.lower_bound(INT_MAX))->second;
- }
- int main() {
- vector<vector<int>> nums = {
- {1,3,4}, //start,end, value;
- {3,5,4},{3,5,4},{2,5,5},
- {5,6,2}
- };
- cout << helper(nums);
- system("pause");
- return 0;
- }
复制代码
|