1 条题解

  • 0
    @ 2025-11-23 21:53:42

    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;
    }
    

    信息

    ID
    5656
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者