P14259 兄妹(siblings)题解

闲话:这似乎是我第一次在 luogu 场切绿。蒟蒻对思维题不太擅长 QwQ。

前置芝士

  • 动态规划 / DP

  • 子集划分问题 / 可行性背包

思路

首先观察这个放书的性质。结论:对于在同一个书架上的书,只需要一个人去负责。

证明也比较简单,考虑某个人去放了这一排最远的(\(c_i\) 最大的)书,那么它一定可以顺带放路上经过的所有的书。有了这个结论,就可以推出:在第 \(x\) 个书架放书的用时是固定的,就是:\(cost_x=2\times\max_\limits{i:\ r_i =x} c_i\)

那么这个问题转化成了:

  • \(m\)\(m\) 为最大书架编号)个数字,把他划分成两组,求两组内部元素的和的最大值的最小值。
  • 但是由于从一个书架移动到另一个还要花费时间,所以还有额外的代价。考虑去放书的时候移动一定是按照下标递增顺序的,同理,放完书回来也不用回头,所以下标一定单调递减。设第一组的总和为 \(s_1\),最大下标为 \(a_1\),第二组的总和为 \(s_2\),最大下标最大为 \(b_2\);则代价为 \(\max(s_1+2\times a_1,s_2+2\times a_2)\)。你需要求这个代价的最小值。

上述第一个问题,是一个经典的“子集划分”问题。直接跑可行性背包加上 std::bitset 优化即可。

对于第二个问题,比较复杂,我们继续观察性质:注意到,由于这两组的并集是全集,所以 \(a_1\)\(a_2\) 一定有一个是 \(m\)

这样,我们可以固定 \(a_2=m\),然后枚举,从 \(1\)\(m-1\) 枚举 \(a_1\) 的值。接下来考虑如何做到 \(a_1=i(1\le i<m)\)。由于 \(a_1\) 表示最大下标,所以任意 \(>i\) 的下标都不能划分至第一组。

  • 还是可行性背包,但是有了初始代价

  • 第一组初始代价是在书架之间走路所花费的 \(2\times a_1\)

  • \(sum=\sum\limits_{j=1}^m cost_j\)\(cnt=\sum\limits_{j=1}^i cost_j\),则第二组的初始代价是在书架之间走路的代价 \(2\times a_2\) 加上下标 \(>i\) 的所有书架放书的代价:\(sum-cur\);第二组的总初始代价为 \(2\times m+sum-cur\)

这个时候再去跑可行性背包,使得两部分尽量平均即可。

Code

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
inline int read(){/*快读模板 略*/};
int cost[505];
bitset<250005> used;
void solve(){for(int i=1;i<=500;i++) cost[i]=0;int n=read(),m=0;for(int i=1;i<=n;i++){int r=read(),c=read();cost[r]=max(cost[r],c);m=max(m,r);}used.reset();used.set(0);int cnt=0,sum=0,ans=3e15;for(int i=1;i<=m;i++) cost[i]*=2,sum+=cost[i];for(int i=1;i<m;i++){cnt+=cost[i];used|=(used<<cost[i]);//可行性背包int a=m*2+sum-cnt,b=i*2;//a是第二组的初始代价,b是第一组的初始代价if(cnt<a-b){ans=min(ans,a);//无法达到两个相等,直接取较大值}else{ans=min((int)(b+(cnt+a-b+1)/2+(used>>((cnt+a-b+1)/2))._Find_first()),ans);//可行性背包:寻找最接近平均值的数ans=min((int)(a+(cnt-a+b+1)/2+(used>>((cnt-a+b+1)/2))._Find_first()),ans);}}cout<<ans<<endl;
}
main(){int T=read();while(T--) solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/940864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年国内连接器厂家经销商最新推荐榜:聚焦优质品牌,助力企业精准采购,实力企业深度解析住友/日端/HRS连接器经销商推荐

引言在电子制造行业高速发展的背景下,连接器作为核心部件,其品质与供应效率直接关乎企业生产进度与产品质量。当前市场中,连接器供应商数量繁杂,产品质量参差不齐,“多品种、小批量、短交期” 的采购痛点让众多企…

2025.10.19 零试

大荒囚天指 吸取教训前一天不打 ABC 了。 这次零试拖了两个月才办出来,然后女丘初试和零试并在一起了。属于是之前也没有参考数据的东西。 前一天中午出发之前开了一把绝巴。进塔之后互架了几分钟发现塔里是两对一样配…

2025 年济南画室最新推荐品牌口碑排行榜权威发布,涵盖小班教学与全封闭管理机构,助力艺考生选优质画室

引言当前济南美术艺考培训市场蓬勃发展,各类画室数量急剧增加,但市场秩序却较为混乱。不少画室存在教学资质缺失、师资水平参差不齐、教学模式落后等问题,有的画室采用几十人的大班授课,教师无法兼顾每位学生,导致…

2025 年最新货代公司排行榜:国内优质企业权威推荐,助力企业精准挑选靠谱合作伙伴泰国/印尼/马来/日本/东南亚货代公司推荐

当前全球贸易格局不断变化,货代行业作为进出口贸易的关键支撑,市场需求持续增长,但行业乱象也随之凸显。众多货代公司资质不一,部分企业缺乏专业团队与成熟资源,在货物运输、清关报检等环节频繁出现延误、流程混乱…

P6076 [JSOI2015] 染色问题 分析

题目概述 有 \(n\times m\) 的棋盘,现在需要涂 \(k\) 种颜色上去,需要满足:每一行至少有一个格子被涂色。 每一列至少有一个格子被涂色。 \(k\) 种颜色必须都在这个棋盘上出现。数据范围:\(1\leq n,m,k\leq 400\)。…

CF2154 Codeforces Round 1060 (Div. 2) 游记

跳过 C2 直接开 D,实现太烂调试过多没时间再写 C2,表现分 $1938$ 勉强稳住紫线。省流 跳过 C2 直接开 D,实现太烂调试过多没时间再写 C2,表现分 \(1938\) 勉强稳住紫线。10.19 内含剧透,请vp后再来。 不是题解!!…

2025 最新推荐!国际物流 / 东南亚 / 跨境电商清关公司排行榜:精选优质机构助企业高效通关

引言当前跨境贸易规模持续扩张,清关作为贸易链条的关键节点,却深陷多重困境。多数机构服务碎片化,仅能覆盖单一环节,难以实现 “货运 - 清关 - 仓储” 全链路衔接,导致货物滞留率居高不下;特殊品类清关经验匮乏,…

C#转java的最好利器easy-query就是efcore4j sqlsugar4j freesql4j

C#转java的最好利器easy-query就是efcore4j sqlsugar4j freesql4j 背景 随着信创或者其他一系列面向领导编程导致部分使用C#的公司转型java,java下EfCore、SqlSugar 、FreeSql的竞品或者替代品就是easy-query 本章节我…

CF2128D Sum of LDS

\(\max(p_i, p_{i + 1}) > p_{i + 2}\) 说明了你在 DP 的过程中只会由 \(p_i, p_{i + 1}\) 转移过来(类似归纳,一定不劣)。 考虑扫描线,设 \(f_i\) 为所有以 \(i\) 为右端点的区间的答案之和,转移时,要么 \(f…

CF2128D Sum of LDS

\(\max(p_i, p_{i + 1}) > p_{i + 2}\) 说明了你在 DP 的过程中只会由 \(p_i, p_{i + 1}\) 转移过来(类似归纳,一定不劣)。 考虑扫描线,设 \(f_i\) 为所有以 \(i\) 为右端点的区间的答案之和,转移时,要么 \(f…

2025.10.20——1黄

普及/提高- P3958 [NOIP 2017 提高组] 奶酪 补题,寒假集训题。

加密货币投资风控方案

加密货币完整可执行的风控方案: 核心风控原则明确最大单笔/累计风险敞口,绝不孤注一掷。[1] 入场前设定止损止盈,执行“先定规则,后交易”。[2] 严格执行仓位管理,分批建仓。[3] 动态复盘和预警,持续优化风控参数…

物联网设备漏洞及其对国家安全的影响分析

本文深入分析物联网设备中的关键安全漏洞,包括Mirai僵尸网络、Reaper僵尸网络、BlueBorne蓝牙漏洞和弱加密漏洞,提供详细的技术描述和概念验证脚本,并探讨这些漏洞对国家安全的潜在影响及相应的防护策略。物联网设备…

完整教程:华硕NUC 15Pro 系列 舒适办公新体验的理想之选

完整教程:华硕NUC 15Pro 系列 舒适办公新体验的理想之选pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

Cisco IOS XRv 9000 Router 25.1.2 MD - 服务提供商边缘虚拟路由器

Cisco IOS XRv 9000 Router 25.1.2 MD - 服务提供商边缘虚拟路由器Cisco IOS XRv 9000 Router 25.1.2 MD - 服务提供商边缘虚拟路由器 Cisco IOS XRv 9000 路由器 请访问原文链接:https://sysin.org/blog/cisco-ios-x…

Roslyn 技术解析:如何利用它做代码生成?

Roslyn 技术解析:如何利用它做代码生成?前两天聊了下Roslyn,如果您耐心看完,也算是入了门,那么今天继续分享它的另外一大特性,那就是 Source Generator,(源代码生成器)是 (Roslyn)提供的一项强大功能,它允…

深度学习注意力机制新篇章

深度学习开源教材《动手学深度学习》新增注意力机制章节,详细解析这一革命性技术在计算机视觉和自然语言处理中的应用,包含丰富的代码示例和数学原理,帮助读者掌握这一重要深度学习概念。《动手学深度学习》新增注意…

marmot 基于nats 的sqlite 同步方案

marmot 基于nats 的sqlite 同步方案marmot 是一个基于nats 的sqlite 数据同步方案,内部技术上基于了触发器(所以对于表schema 的变更以及如果添加了新的表,处理上就会有一些技巧了) 参考玩法说明 marmot 对于实时处…

Cisco IOS XRv 9000 Router 24.4.2 MD - 服务提供商边缘虚拟路由器

Cisco IOS XRv 9000 Router 24.4.2 MD - 服务提供商边缘虚拟路由器Cisco IOS XRv 9000 Router 24.4.2 MD - 服务提供商边缘虚拟路由器 Cisco IOS XRv 9000 路由器 请访问原文链接:https://sysin.org/blog/cisco-ios-x…

CSP-S模拟35

CSP-S模拟35 () Code:() Code:() Code:() Code:以下是博客签名,正文无关 本文来自博客园,作者:Wy_x,转载请在文首注明原文链接:https://www.cnblogs.com/Wy-x/p/19151702 版权声明:本作品采用「署名-非商业性…