1 solutions

  • 0
    @ 2025-11-27 11:58:50

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
     
    struct game{//结构体用来存放每个游戏的时间和利益 
    	int t;
    	int r;
    }a[505];
     
    bool cmp(game a,game b){//cmp函数(结构体排序规则) 
    	return a.r>b.r;
    }
    bool vis[505];//用来标记该时间是否空闲 
    int sum;//收益和 
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%d",&a[i].t);
    	}
    	for(int i=1;i<=n;i++){
    		scanf("%d",&a[i].r);
    	}
    	
    	sort(a+1,a+n+1,cmp);//排序 
    	
    	for(int i=1;i<=n;i++){
    		bool k=0;//用来记录该任务是否能按时完成 
    		for(int j=a[i].t;j>=1;j--){//按时间从大到小去枚举 
    			if(vis[j]==0){//说明有时间 
    				vis[j]=1;//标记,说明该时间已被占用 
    				k=1;//该任务可以完成 
    				break;
    			}
    		}
    		if(k==1){//若该任务可以完成 
    			sum+=a[i].r;//将该任务的收益加入累加器 
    		}
    	}
    	printf("%d",sum);//输出 
    	return 0;
    }
    
    • 1

    Information

    ID
    102
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By