新闻详情

新闻详情

首页 / 资讯中心 / 详情

CSP-S 2025 T1社团招新

发布时间:2026/10/1 21:30:14来源:尧图网络
CSP-S 2025 T1社团招新
初步无限制贪心若不考虑“每个部门人数不超过n2\frac{n}{2}2n​”的限制最优策略是让每个人iii都进入其满意度最大的部门即选择max⁡(ai,1,ai,2,ai,3)\max(a_{i,1}, a_{i,2}, a_{i,3})max(ai,1​,ai,2​,ai,3​)。容量超标判断因为总人数为nnn限制为每个部门人数不超过n2\frac{n}{2}2n​因此至多只有一个部门的人数会超过n2\frac{n}{2}2n​。设贪心选择后三个部门的人数分别为c1,c2,c3c_1, c_2, c_3c1​,c2​,c3​。如果c1,c2,c3≤n2c_1, c_2, c_3 \leq \frac{n}{2}c1​,c2​,c3​≤2n​则当前解即为最优解直接输出总和。如果某个部门不妨设为部门DDD的人数cDn2c_D \frac{n}{2}cD​2n​则必须将cD−n2c_D - \frac{n}{2}cD​−2n​个人调整到其他两个部门中。超标时的调整对于原本分配到部门DDD的每个人iii如果将其改派到另外两个部门中的某一个造成的满意度损失最小为Δiai,D−max⁡j≠Dai,j\Delta_i a_{i,D} - \max_{j \neq D} a_{i,j}Δi​ai,D​−jDmax​ai,j​显然Δi≥0\Delta_i \geq 0Δi​≥0。为了使总满意度最大化我们应当选择损失Δi\Delta_iΔi​最小的人进行调整。我们将所有原先分配到部门DDD的人按照Δi\Delta_iΔi​从小到大排序挑选损失最小的cD−n2c_D - \frac{n}{2}cD​−2n​个人移出部门DDD。是否会导致移入的部门人数超过n2\frac{n}{2}2n​原先部门DDD的人数cD≤nc_D \leq ncD​≤n。移出后部门DDD的人数恰好为n2\frac{n}{2}2n​剩下的两个部门的总人数为n−n2n2n - \frac{n}{2} \frac{n}{2}n−2n​2n​。由于另外两个部门的人数非负且总和为n2\frac{n}{2}2n​因此它们中的任何一个部门的人数都不可能超过n2\frac{n}{2}2n​。因此只需将损失最小的cD−n2c_D - \frac{n}{2}cD​−2n​个人的损失减去即可无需担心二次超标问题。#includebits/stdc.husingnamespacestd;constintMAXN100005;// 用于存储各部门成员改选带来的最小损失intdiffs[3][MAXN],cnt[3];voidsolve(){intn;cinn;cnt[0]cnt[1]cnt[2]0;longlongtotal_sum0;for(inti0;in;i){inta[3];cina[0]a[1]a[2];// 选出最大值对应的部门intbest_dept0;if(a[1]a[best_dept])best_dept1;if(a[2]a[best_dept])best_dept2;total_suma[best_dept];// 找到除最优部门外的最大满意度intsecond_best-1;for(intj0;j3;j){if(jbest_dept)continue;if(second_best-1||a[j]second_best)second_besta[j];}// 存入对应部门的普通数组中diffs[best_dept][cnt[best_dept]]a[best_dept]-second_best;}intlimitn/2,over_dept-1;for(intj0;j3;j)if(cnt[j]limit){over_deptj;break;}// 若有部门超标按损失从小到大排序并减去超出的部分if(over_dept!-1){intneed_to_removecnt[over_dept]-limit;sort(diffs[over_dept],diffs[over_dept]cnt[over_dept]);for(inti0;ineed_to_remove;i)total_sum-diffs[over_dept][i];}couttotal_sum\n;}intmain(){intt;cint;while(t--){solve();}}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Trae国际版免费600次快速请求实测:领取要点与消耗策略 2026/10/1 22:29:48

Trae国际版免费600次快速请求实测:领取要点与消耗策略

最近收到不少私信,都在问Trae国际版送600次快速请求的事。这波羊毛传得很广,但大部分帖子只说“送”,没说清楚这600次到底怎么算、够干什么用。我花了两天时间把领取流程、消耗模型和几个进阶玩法都过了一遍,下面把账摊开算给你看…

阅读更多 →
SCons深度搜索实战:用Glob自动收集源文件,告别手动列表 2026/10/1 22:29:41

SCons深度搜索实战:用Glob自动收集源文件,告别手动列表

我一度很抗拒改 SConstruct,不是因为 SCons 难学,而是每当要新增一个源文件,就得手动在那个文件列表里加一行。更气人的是,你常常会忘。忘了之后,编译一路畅通,链接器却在最后甩给你一个undefined referenc…

阅读更多 →
命名管道路径决定跨进程通信:从踩坑到设计准则 2026/10/1 22:29:34

命名管道路径决定跨进程通信:从踩坑到设计准则

跨进程通信(IPC)里,命名管道一直是我最常用的方案之一。它简单、稳定,而且不需要像共享内存那样处理同步锁,按字节流读写就行。但很多人在第一次接触时就栽在同一个地方:命名管道的路径。路径写对了&#x…

阅读更多 →
运维工程师学习路线:从Linux基础到自动化与监控的进阶指南 2026/10/1 22:29:27

运维工程师学习路线:从Linux基础到自动化与监控的进阶指南

“运维学习笔记(完善中)”——当我写下这个标题的时候,其实心里很清楚,这份笔记大概率永远不会有真正“完善”的那一天。倒不是说自己懒或者学不动,而是运维这个行当,技术栈的膨胀速度远超个人的学习速度。…

阅读更多 →
traceId写死引发日志串线:分布式链路追踪故障深度复盘 2026/10/1 22:29:27

traceId写死引发日志串线:分布式链路追踪故障深度复盘

1. 现场还原:一条"不该重复"的 traceId,把三套服务搅在了一起事情是这样的,晚上 10 点 37 分,报警群突然开始刷屏:核心交易链路的 ERROR 日志一小时涨了 3 倍。我点开日志平台,按错误关键字刷了一…

阅读更多 →
Windows 11 26H2官方原版ISO下载与安装避坑指南 2026/10/1 22:29:20

Windows 11 26H2官方原版ISO下载与安装避坑指南

1. 为什么我不碰第三方镜像,只认官方原版 ISO先聊点实际的。我身边不少朋友装机,第一反应不是去微软官网,而是搜索"win11镜像下载",然后顺手点进某个下载站,找一个看着体积差不多的 ISO 就开始写盘。这么做不…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉