ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

b_hw/pdd_任务最大得分(堆/multiset)

2021-08-22 21:35:12  阅读:175  来源: 互联网

标签:begin int hw st second 景点 multiset pdd first


T 组, 每一组商品 p 的 p[i][0] 表示价值,p[i][1] 表示下架时间,问怎么卖,才能让价值最大。

int T; cin >> T;
    while (T--) {
        int n; cin >> n;
        vector<pair<int, int>> a(n);
        for (int i = 0; i < n; ++i) {
            int s, t; cin >> s >> t;
            a[i] = {s, t}; //第二维是结束时间
        }
        sort(a.begin(), a.end(), [&](auto& A, auto& B) {
            return A.second < B.second || (A.second == B.second && A.first > B.first);
        });

        multiset<int> st;
        int now = 0;
        for (int i = 0; i < n; ++i) {
            if (a[i].second != now) {
                now++;
                st.insert(a[i].first);
            } else if (a[i].first > (*st.begin())) {
                st.erase(st.begin());
                st.insert(a[i].first);
            }
        }
        int ans = 0;
        for (auto it = st.begin(); it != st.end(); it++) {
            ans += *it;
        }
        cout << ans << '\n';
    }

[1,2,15]
[1,3,14]
[3,4,9]
4
1

输出23, 路线1-3-4.虽然不经过2,但是1可以到2,所以算能到达。
输入如上,前三行分别代表景点1到景点2之间有路,距离为15,景点1到景点3之间有路,距离为14,景点3到景点4之间有路,距离为9。
接下来输入一共有多少个景点,下一行是起始景点。问是否能逛完,可以的话求最长路径,否则输出-1.景点数小于100,路径长度小于100,两个景点间路径数小于5000.
这个输入处理麻烦,因为格式不一致而且不确定有多少

标签:begin,int,hw,st,second,景点,multiset,pdd,first
来源: https://www.cnblogs.com/wdt1/p/15125986.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有