首页 > 其他分享 >L2-046 天梯赛的赛场安排

L2-046 天梯赛的赛场安排

时间:2024-03-28 19:55:38浏览次数:32  
标签:cnt pq int renshu 考场 L2 天梯 046 maxn

和这道题真的有壁,拿起来就做,然后做错了。又看了半天题目,才知道大概啥意思。
每一轮都需要给人数最多的学校分配位置,如果人数大于c,分配一个教室剩下的人还要再放回进行第二轮,而不是一次性给这个学校分配完。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 5005;
string sname[maxn];
int renshu[maxn], pos[maxn],cnt[100*maxn];//cnt人数,pos第i个学校需要的考场数量,第i个考场剩余的人数
priority_queue<pair<int, int>> pq;//人数-学校编号
map<int, int> rest;
int main() {
	int n, c;
	cin >> n >> c;
	for (int i = 1; i <= n; i++) {
		cin >> sname[i] >> renshu[i];
		pq.push({ renshu[i],i });
	}
	int kccnt = 0;
	while (!pq.empty()) {
		int k = pq.top().first;
		int sno = pq.top().second;
		pq.pop();
		pos[sno]++;//涉及一个考场
		if (k >= c) {
			cnt[++kccnt] = 0;
			k -= c;
			if (k) {
				pq.push({k,sno});
			}
			continue;
		}
		int flag = 0;//是否找到了满足需求的考场
		for (int i = 1; i <= kccnt; i++) {
			if (cnt[i] >= k) {
				flag = 1;
				cnt[i] -= k;
				break;
			}
		}
		if (!flag) cnt[++kccnt] = c - k;
	}
	for (int i = 1; i <= n; i++) {
		cout << sname[i] << " " << pos[i] << '\n';
	}
	cout << kccnt << '\n';
	return 0;
}

标签:cnt,pq,int,renshu,考场,L2,天梯,046,maxn
From: https://www.cnblogs.com/chengyiyuki/p/18102506

相关文章

  • 安装并配置fail2ban防止cc攻击
    通过下面命令安装fail2banyum-yinstallfail2ban启动systemctlstartfail2ban查看状态systemctlstatusfail2ban设置开机启动systemctlenablefail2ban检查版本fail2ban-client-Vfail2ban-sever-V检查配置文件是否有误fail2ban-client-d配置后需要重启服......
  • L2-044 大众情人
    测试点4一开始没过去,以为是数据范围的问题。找半天才发现是floyd三层循环k那个写反了,害。#include<bits/stdc++.h>usingnamespacestd;vector<int>male,female;intdis[510][510];intmain(){ memset(dis,0x3f,sizeof(dis)); intn; cin>>n; for(inti=1;i......
  • 逻辑链路控制与适配协议(L2CAP)
    逻辑链路控制与适配协议通常简称为L2CAP(LogicalLinkControlandAdaptationProtocol),它向上连接应用层,向下连接控制器层,发挥主机与控制器之间的适配器的作用,使上层应用操作无需关心控制器的数据处理细节。经典蓝牙的L2CAP层比较复杂,它实现了协议复用、数据分段与重组、封装......
  • L2-043 龙龙送外卖
    考察的是贪心+记忆化搜索。最短路=走过的路径*2-从根到小区最深路径长度#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+10;intp[maxn],dis[maxn],dp[maxn];intmaxdepth=0,sumpath=0;intdfs(ints){//记忆化搜索 if(p[s]==-1)return0......
  • 团体程序设计天梯赛 L2-029 特立独行的幸福
    L2-029特立独行的幸福分数25对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到1,就称该数为幸福数。1是一个幸福数。此外,例如19经过1次迭代得到82,2次迭代后得到68,3次迭代后得到100,最后得到1。则19就是幸福数。显然,在......
  • L2-028 秀恩爱分得快
    可恶的模拟,借鉴了别人的思路,这样写很清晰#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=1e5+10;constintinf=0x3f3f3f3f;constintmod=1e9+7;intn,q,m;vector<int>a,b;doubleg[1010][1010];doublemaxn[1010];set<......
  • 2024SMUSpring天梯2补题
    L2-2:红色警报题意:只要连通块数目减少就输出RedAlert,主要是连通块数目..intn,m,k;unordered_map<int,int>mark;vector<int>vct[505];boolvis[505];voiddfs(intx){for(autov:vct[x]){if(!vis[v]&&!mark[v]){vis[v]=1;dfs(......
  • PTA L2-033 简单计算器 手写栈
    本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就执行以下操作:从 S1​ 中弹出两个数字,顺序为 n1​ 和......
  • V4L2 ioctl调用流程分析
    学习资料:韦东山第三期 可参考:https://www.cnblogs.com/lethe1203/p/18097351video_device->.fops->v4l2_file_operations->.ioctl_ops->v4l2_ioctl_opsv4l2_ioctl_ops可分为两类:INFO_FL_STD:标准的,无需特殊的代码来处理,APP的调用可以直达这些处理函数I......
  • V4L2驱动程序整体框架
    学习资料:韦东山第三期 应用程序调用open/read/write会调用到v4l2_fops的相应函数:接口层再调用到硬件相关的代码,根据打开的文件得到一个video_device(根据此设备号),调用这个video_device里面的vdev->fops->open函数可以看到read和ioctl也是类似的: 应用程序进入到驱动之......