L2-046 天梯赛的赛场安排
1.L1-019 谁先倒2.L1-018 大笨钟(10分)3.L1-009 N个数求和4.L1-002 打印沙漏5.L1-020 帅到没朋友6.L1-024 后天7.L1-027 出租8.L1-030 一帮一9.L1-039 古风排版10.L1-033 出生年11.L1-043 阅览室12.L1-046 整除光棍13.L1-049 天梯赛座位分配14.L1-054 福到了15.L1-058 6翻了16.L1-059 敲笨钟17.L2-001 紧急救援18.L2-002 链表去重(25分)19.L2-003 月饼20.L2-005 集合相似度21.L2-007 家庭房产22.L2-012 关于堆的判断23.L2-013 红色警报24.L2-014 列车调度25.L1-064 估值一亿的AI核心代码(20分)26.L2-020 功夫传人27.L2-022 重排链表28.L2-023 图着色问题29.L2-024 部落30.L2-025 分而治之31.L2-026 小字辈(25分)32.L2-027 名人堂与代金券33.L2-028 秀恩爱分得快34.L2-029 特立独行的幸福35.L2-030 冰岛人36.L2-032 彩虹瓶37.L2-034 口罩发放38.L2-036 网红点打卡攻略39.L2-037 包装机40.L2-038 病毒溯源41.L2-035 完全二叉树的层序遍历42.L2-039 清点代码库43.L2-042 老板的作息表44.L2-043 龙龙送外卖45.L2-044 大众情人46.L2-045 堆宝塔
47.L2-046 天梯赛的赛场安排
48.L2-048 寻宝图49.L2-047 锦标赛50.L1-069 胎压监测51.L1-070 吃火锅52.L1-071 前世档案53.L1-078 吉老师的回归54.L1-080 乘法口诀数列55.L1-083 谁能进图书馆56.L1-086 斯德哥尔摩火车上的题57.L1-087 机工士姆斯塔迪奥58.L1-088 静静的推荐59.L2-006 树的遍历60.L2-011 玩转二叉树61.L2-004 这是二叉搜索树吗?62.L1-094 剪切粘贴63.L1-095 分寝室64.L1-096 谁管谁叫爹65.L3-001 凑零钱66.L3-002 特殊堆栈67.L3-003 社交集群68.L3-004 肿瘤诊断69.L3-005 垃圾箱分布70.L3-007 天梯地图71.L3-008 喊山72.L3-014 周游世界73.L3-011 直捣黄龙74.1009 说反话75.1010 一元多项式求导76.1013 数素数77.1014 福尔摩斯的约会78.1015 德才论79.1017 A除以B(高精除以低精)80.1018 锤子剪刀布81.1019 数字黑洞(stl)82.1022 D进制的A+B83.1023 组个最小数84.1024 科学计数法85.1025 反转链表86.1028 人口普查87.1029 旧键盘88.1030 完美数列89.1033 旧键盘打字90.1034 有理数四则运算(模板)91.1035 插入与归并92.1037 在霍格沃茨找零钱93.1039 到底买不买94.1044 火星数字95.1046 划拳96.1048 数字加密97.1048 数字加密(前缀和思想)98.1049 数列的片段和99.1050 螺旋矩阵100.1051 复数乘法和这道题真的有壁,拿起来就做,然后做错了。又看了半天题目,才知道大概啥意思。
每一轮都需要给人数最多的学校分配位置,如果人数大于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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库