贪心+STL—— [Usaco2007 Dec]挑剔的美食家
2011-09-13 22:13
218 查看
思想是按草的新鲜程度作为第一关键词,前作为第二关键词排序(因为要取钱较少的,所以草鲜嫩排第一)
multiset 储存符合第二关键词的 所有第一关键词,取合理且最小的第一关键词累积
View Code
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; }
相关文章推荐
- bzoj1691 [Usaco2007 Dec]挑剔的美食家 treap+贪心
- 【贪心+Treap】BZOJ1691-[Usaco2007 Dec]挑剔的美食家
- BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家(贪心+splay)
- 【BZOJ 1691】[Usaco2007 Dec]挑剔的美食家 treap+贪心
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家【贪心+splay】
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家(multiset贪心)
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 贪心 treap
- BZOJ[1691][Usaco2007 Dec]挑剔的美食家 贪心+Splay
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
- 【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家
- BZOJ 1691 [Usaco2007 Dec]挑剔的美食家 贪心+treap
- 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家(set+贪心)
- 【bzoj1691】[Usaco2007 Dec]挑剔的美食家
- 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家 Treap
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家
- 1691: [Usaco2007 Dec]挑剔的美食家
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家