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

题解:AcWing 280 陪审团

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AcWing280. 陪审团 - AcWing题库【题目描述】在一个遥远的国家一名嫌疑犯是否有罪需要由陪审团来决定。陪审团是由法官从公民中挑选的。法官先随机挑选N NN个人编号1 , 2 … , N 1,2…,N1,2…,N作为陪审团的候选人然后再从这N NN个人中按照下列方法选出M MM人组成陪审团。首先参与诉讼的控方和辩方会给所有候选人打分分值在0 00到20 2020之间。第i ii个人的得分分别记为p [ i ] p[i]p[i]和d [ i ] d[i]d[i]。为了公平起见法官选出的M MM个人必须满足辩方总分D DD和控方总分P PP的差的绝对值∣ D − P ∣ |D−P|∣D−P∣最小。如果选择方法不唯一那么再从中选择辨控双方总分之和D P DPDP最大的方案。求最终的陪审团获得的辩方总分D DD、控方总分P PP以及陪审团人选的编号。注意若陪审团的人选方案不唯一则任意输出一组合法方案即可。【输入】输入包含多组测试数据。每组测试数据第一行包含两个整数N NN和M MM。接下来N NN行每行包含两个整数p [ i ] p[i]p[i]和d [ i ] d[i]d[i]。每组测试数据之间隔一个空行。当输入数据N 0 N0N0M 0 M0M0时表示结束输入该数据无需处理。【输出】对于每组数据第一行输出Jury #CC CC为数据编号从1 11开始。第二行输出Best jury has value P for prosecution and value D for defence:P PP为控方总分D DD为辩方总分。第三行输出按升序排列的陪审人选编号每个编号前输出一个空格。每组数据输出完后输出一个空行。【输入样例】4 2 1 2 2 3 4 1 6 2 0 0【输出样例】Jury #1 Best jury has value 6 for prosecution and value 4 for defence: 2 3【算法标签】#01背包【代码详解】#includebits/stdc.husingnamespacestd;constintN205,M805,base400;// N: 最大候选人数量M: 总分差范围base: 偏移量intn,m,p[N],d[N];// n: 候选人数量m: 需要选择的候选人数量p[N]: 起诉分数d[N]: 辩护分数intf[N][25][M],ans[N];// f[i][j][k]: 前i个人中选择j个人总分差为k时的最大总分和ans[N]: 选择的候选人编号intmain(){intt1;// 测试用例编号while(cinnm,n||m)// 读取n和m直到都为0结束{for(inti1;in;i)// 读取每个候选人的分数cinp[i]d[i];memset(f,-0x3f,sizeof(f));// 初始化f为负无穷f[0][0][base]0;// 基础状态不选人人数为0分数差为0base表示偏移后的0for(inti1;in;i)// 遍历所有候选人for(intj0;jm;j)// 遍历选择的人数for(intk0;kM;k)// 遍历可能的分数差{f[i][j][k]f[i-1][j][k];// 不选第i个人inttk-(p[i]-d[i]);// 选第i个人时的分数差偏移if(t0||j1)// 如果越界或人数不足continue;f[i][j][k]max(f[i][j][k],f[i-1][j-1][t]p[i]d[i]);// 选第i个人}intv0;// 分数差绝对值// 找到最接近0的有效分数差while(f[n][m][basev]0f[n][m][base-v]0){v;}if(f[n][m][basev]f[n][m][base-v])// 正方向分数差的总分更大vbasev;else// 负方向分数差的总分更大vbase-v;// 回溯构造选择的候选人列表intin,jm,kv;intcnt0;// 选择的候选人数量while(j)// 当还需要选择候选人时{if(f[i][j][k]f[i-1][j][k])// 第i个人未被选择{i--;}else// 第i个人被选择{ans[cnt]i;// 记录选择的候选人编号kk-(p[i]-d[i]);// 更新分数差i--,j--;// 移动到前一个候选人和减少选择人数}}inta0,b0;// 起诉总分和辩护总分for(inti0;icnt;i)// 计算总分ap[ans[i]],bd[ans[i]];printf(Jury #%d\n,t);printf(Best jury has value %d for prosecution and value %d for defence:\n,a,b);sort(ans,anscnt);// 排序输出编号for(inti0;icnt;i)cout ans[i];coutendl;coutendl;t;}return0;}【运行结果】4 2 1 2 2 3 4 1 6 2 0 0 Jury #1 Best jury has value 6 for prosecution and value 4 for defence: 2 3
http://www.rkmt.cn/news/1391561.html

相关文章:

  • FieldTrip脑电信号分析工具箱:从数据预处理到高级统计的完整指南
  • Lindy翻译工作流自动化升级(2024企业级部署白皮书):仅3家头部语言服务商在用的私有化集成协议
  • League Akari:英雄联盟玩家的终极本地化智能工具箱,安全高效提升游戏体验
  • 成图gerber文件导出之AD篇
  • 通过Hermes Agent自定义供应商配置无缝接入Taotoken聚合服务
  • [实战] HC32L13X驱动TM1729:软件模拟I2C点亮段码屏
  • 2026 年自动包装秤企业/厂家发展现状分析(附核心数据) - GrowthUME
  • 039、NPU中断处理:异步推理与同步推理
  • G-Helper终极指南:华硕笔记本性能优化与系统控制的完整解决方案
  • Angry IP Scanner网络扫描工具:3步快速上手终极指南
  • 常州闲置黄金怎么卖?福运来上门回收靠谱又省心 - 黄金回收
  • 嵌入式Wasm内存安全新方案:WARD如何用虚拟地址空间实现零物理开销保护
  • Java 枚举的 3 个神仙用法,告别烂代码!
  • 酒店预订与客房智能分配系统:从在线订房到前台入住退房的闭环管理实践
  • 深入剖析8259A:从引脚到编程的完整指南
  • 电商系统SSL故障四类根因诊断与修复指南
  • Prometheus介绍及监控平台部署
  • UVM静态函数(Static Function)用法详解
  • 怎样高效使用BepInEx插件框架:3步打造专业级游戏模组体验
  • 虚拟机无法获取ipv4地址
  • YOLOv5_OBB:面向旋转目标检测的工业级解决方案
  • Ubuntu 24.04 安装 Fcitx5 拼音输入法教程
  • 45天实测5个行业客户的GEO收录数据:前21天为零,改标题后达100%
  • GEO全攻略:从概念到选型,2026年五大头部GEO服务商深度测评 - 行业深度观察C
  • 初步理解 JVM:类加载机制、内存结构与核心运行原理
  • JMeter接口与压力测试实战:从连通性校验到性能瓶颈定位
  • 如何在CentOS 8中配置PostgreSQL 12流复制?
  • 【Lovable翻译平台开发实战指南】:20年资深架构师亲授高可用多语言系统设计心法
  • 2026新榜单:湘西母婴除甲醛CMA甲醛检测治理公司多少钱怎么收费 - 金诚回收
  • SteamDeck_rEFInd完全指南:Steam Deck双系统引导管理的终极解决方案