zoukankan      html  css  js  c++  java
  • ATcoder--D

    这个题目的题意有点难搞

    题目连接:

    https://atcoder.jp/contests/abc137/tasks/abc137_d

    题目大意:输入n和m 指的是一共有n个输入在m天前一共能赚到的钱为多少,输入x,y,分别指的是在x天后可以赚到y.

    题解:贪心。。。这道题错了好多次。

    正解:我们用一个vector数组来保存某一天可以赚到的钱,然后倒着枚举就是在最后一天,只能取x=1的最大值,倒数第二天我们们要取x=2和x=1中的最大值,,,,,依次类推

    所以我们要借用优先队列:

    AC代码:

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<vector>
    #include<algorithm>
    using namespace std;
    const int N=1E6+7;
    vector<int>ve[N];
    int main(){
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            int x,y;
            scanf("%d%d",&x,&y);
            ve[x].push_back(y);
        }
        for(int i=1;i<=m;i++){
            sort(ve[i].begin(),ve[i].end());
        }
        priority_queue<int >que;
        int ans=0;
        for(int i=1;i<=m;i++){
            for(int j=0;j<ve[i].size();j++){
                que.push(ve[i][j]);
            }
            if(que.size()){
                    ans+=que.top();
                    que.pop();
            }
        }
        cout<<ans<<endl;
        return 0;
    } 
  • 相关阅读:
    windows性能计数器
    bootstrap2.0与3.0的区别
    prototype.js简介
    .NET生成静态页面并分页
    .net 生成 静态页面
    传统的生成静态页面
    vimrc
    nginx模块动态加载(http)
    ffmpeg --help full
    confiure
  • 原文地址:https://www.cnblogs.com/Accepting/p/11583484.html
Copyright © 2011-2022 走看看