当前位置: 首页 > news >正文

L2-046 天梯赛的赛场安排 #二次手写cmp比较函数 这个模拟思路太神了

文章目录

  • 题目解读
  • 思路
  • AC CODE
  • 参考


题目解读

巴拉巴拉一大堆,实际上题目都告诉我们用什么算法能得到最优解了
但是模拟的过程还是十分的艰辛

思路

大模拟,注释给出

AC CODE

#include<bits/stdc++.h>

using namespace std;

const int N =5010;

int totalSum; 

struct range{
	string name;
	int id;
	int num;//教室数量
	int stuNum;//学生数量 
}r[N]; 

vector<int> class_;//额外开辟的考场 

bool cmp1(range r1,range r2){
	return r1.stuNum>r2.stuNum;
}

bool cmp2(range r1,range r2){
	return r1.id < r2.id;
}

int main(){
	int n,c;
	cin >> n >> c;
	for(int i=0; i<n; i++){
		string name;
		int num;
		
		cin >> name >> num;
		
		//教室数量 
		int t=num/c;
		//纯赛场数量 
		totalSum+=t;
		
		//剩几个学生 
		num%=c;
		
		//有剩余的话后续还要额外给他加学生 
		if(num!=0)t++;
		
		r[i]={name,i,t,num}; 
	} 
	//按照剩余学生数量进行排序 
	sort(r,r+n,cmp1);
	
	for(int i=0; i<n; i++){
		bool flag=false;
		//当前学校学生安排完毕就continue 
		if(r[i].stuNum==0)continue;
		else{
			for(int j=0; j<class_.size(); j++){
				//当前学生能被安排到这个赛场 
				if(class_[j]+r[i].stuNum<=c){
					flag=true;
					break;
				}
			}
			//不能的话新开辟,初始值就是当前学校的学生人数 
			if(!flag){
				class_.push_back(r[i].stuNum); 
			} 
		}
	}
	
	sort(r,r+n,cmp2);
	
	for(int i=0; i<n; i++)cout<<r[i].name<<" "<<r[i].num<<endl;
	
	cout<<totalSum+class_.size();
	
	return 0;
}

参考

B站up主,一天五顿饭


🌻编写本篇文章目的是笔者想以输出的形式进行学习,顺便记录学习点滴🌻

🌹 如果本篇文章对你有帮助的话那就点个赞吧👍🌹

😇 本篇文章可能存在多处不足,如有修改意见,可以私信或者评论我哦 😇


在这里插入图片描述

相关文章:

  • Nginx 负载均衡案例配置
  • [蓝桥杯青少年组省赛 2024] 通关游戏的最少能量值
  • 13-产品经理-产品多分支平台管理
  • 设计模式简述(九)命令模式
  • 【统计方法】降维方式;pca, t-sne, mds
  • 浙江西湖游记
  • TLS协议详解
  • 关于AI大模型的一些理解
  • 基于 Spring Boot 瑞吉外卖系统开发(一)
  • 从扩展黎曼泽塔函数构造物质和时空的结构-16
  • PyTorch 实现图像版多头注意力(Multi-Head Attention)和自注意力(Self-Attention)
  • 棋盘问题(DFS)
  • 【文献研究】含硼钢中BN表面偏析对可镀性的影响
  • 使用OpenSceneGraph生成3D数据格式文件
  • 经典回溯问题———组合的输出
  • CentOS 部署 Nodejs
  • java面试篇 Redis+MySQL+Spring
  • 【C/C++】滑动谜题(leetcode T773)
  • Transformer架构
  • 【ARTS】2873.有序三元组中的最大值!
  • 政府门户网站建设依据及必要性/青岛seo计费
  • 做投注网站多少钱/市场营销推广方案模板
  • 正规的百度快排seo/重庆seo霸屏
  • 江西最近发生的新闻/网站优化推广费用
  • 饿了么网站做生鲜吗/企业网站定制开发
  • 域名哪里注册/seo优化一般多少钱