3 条题解
-
2
C++ :
#include <iostream> #include <algorithm> #include <queue> #include <vector> #include <limits.h> using namespace std; const int N=1e4+5; priority_queue<int,vector<int>,greater<int> > q; int n; pair<int,int> p[N]; int main() { while(cin>>n){ int maxd=INT_MAX; for(int i=0;i<n;i++){ cin>>p[i].second>>p[i].first; } sort(p,p+n); for(int i=0;i<n;i++){ if(q.size()<p[i].first) q.push(p[i].second); else { if(p[i].second>q.top()){ q.pop(); q.push(p[i].second); } } } int ans=0; while(!q.empty()){ ans+=q.top(); q.pop(); } cout<<ans<<endl; } return 0; } -
1
#include<bits/stdc++.h> using namespace std; struct node { int p,d; }a[10005]; int cmp(node a,node b){ return a.p>b.p ; } int main(){ int n; while(cin>>n){ int maxn=0; for(int i=1;i<=n;i++){ cin>>a[i].p >>a[i].d ; if (a[i].d>maxn) maxn=a[i].d ; } sort(a+1,a+n+1,cmp); int flag[10005]={}; int ans=0; for(int i=1;i<=n;i++){ for(int j=a[i].d;j>=1;j--){ if(!flag[j]){ flag[j]=1; ans+=a[i].p; break; } } } cout<<ans<<endl; } return 0; } //抄牢尸的
-
-1
#include <iostream> #include <algorithm> #include <queue> #include <vector> #include <limits.h> using namespace std; const int N=1e4+5; priority_queue<int,vector<int>,greater<int> > q; int n; pair<int,int> p[N]; int main() { while(cin>>n){ int maxd=INT_MAX; for(int i=0;i<n;i++){ cin>>p[i].second>>p[i].first; } sort(p,p+n); for(int i=0;i<n;i++){ if(q.size()<p[i].first) q.push(p[i].second); else { if(p[i].second>q.top()){ q.pop(); q.push(p[i].second); } } } int ans=0; while(!q.empty()){ ans+=q.top(); q.pop(); } cout<<ans<<endl; } return 0; }
- 1
信息
- ID
- 56
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 119
- 已通过
- 85
- 上传者