zoukankan      html  css  js  c++  java
  • 贪心+STL—— [Usaco2007 Dec]挑剔的美食家

    思想是按草的新鲜程度作为第一关键词,前作为第二关键词排序(因为要取钱较少的,所以草鲜嫩排第一)

    multiset 储存符合第二关键词的 所有第一关键词,取合理且最小的第一关键词累积

    View Code
    #include<stdio.h>
    #include
    <algorithm>
    #include
    <iostream>
    #include
    <vector>
    #include
    <set>
    using namespace std;

    int main()
    {
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
    vector
    <pair<int,int> > ve;
    vector
    <pair<int,int> > ve1;

    int i,j,a,b;
    for(i=0;i<n;i++)
    {
    scanf(
    "%d%d",&a,&b);
    ve.push_back(make_pair(b,a));
    }
    for(i=0;i<m;i++)
    {
    scanf(
    "%d%d",&a,&b);
    ve1.push_back(make_pair(b,a));
    }

    sort(ve.begin(),ve.end());
    sort(ve1.begin(),ve1.end());

    multiset
    <int>set1;
    int ok=0;
    long long all=0;
    j
    =m-1;
    for(i=n-1;i>=0;i--)
    {
    for(;j>=0;)
    {
    if(ve1[j].first>=ve[i].first)
    {
    set1.insert(ve1[j].second);
    j
    --;
    }
    else
    {
    break;
    }
    }
    if(set1.size()==0)
    {
    printf(
    "-1\n");
    ok
    =1;
    break;
    }
    multiset
    <int>::iterator p= set1.lower_bound(ve[i].second);
    //cout<<" "<<*p;
    all+=*p;
    set1.erase(p);
    }

    if(ok==0)
    {
    printf(
    "%lld\n",all);
    }
    }

    return 0;
    }

      

  • 相关阅读:
    生信入门-爱课程上的华中农业大学
    PAT 1115 Counting Nodes in a BST[构建BST]
    PAT 1133 Splitting A Linked List[链表][简单]
    PAT 1037 Magic Coupon[dp]
    PAT 1033 To Fill or Not to Fill[dp]
    畅通工程续 HDU1874
    Free DIY Tour HDU1224
    六度分离 HDU1869
    Arbitrage HDU1217
    floyed算法
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2175180.html
Copyright © 2011-2022 走看看