3 条题解

  • 2
    @ 2021-8-7 20:49:57

    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
      @ 2026-7-15 9:37:35

      #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
        @ 2021-11-29 19:08:17
        #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
        上传者