zoukankan      html  css  js  c++  java
  • b_hw/pdd_任务最大得分(堆/multiset)

    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 << '
    ';
        }
    

    [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.
    这个输入处理麻烦,因为格式不一致而且不确定有多少

  • 相关阅读:
    【转】 【技巧 】 数学难题大揭秘:减少计算错误的技术
    [转]Mathematical Induction --数学归纳法1
    Vector Calculus
    test latex1
    [转]架构蓝图--软件架构 "4+1" 视图模型
    What Is Mathematics?
    二项式展开
    游戏系统设计
    Golang游戏服务器与skynet的个人直观比较
    [转]透过 Linux 内核看无锁编程
  • 原文地址:https://www.cnblogs.com/wdt1/p/15125986.html
Copyright © 2011-2022 走看看