Crossing the Border 题解

news/2026/1/20 19:14:42/文章来源:https://www.cnblogs.com/FloatingLife/p/19508319

Crossing the Border

题意\(n\) 个物品,每个物品有价值 \(c_i\) 和重量 \(w_i\),给定 \(W\),现在要把所有物品划分成若干个集合,且每个集合的物品重量之和不超过 \(W\),定义一个集合的权值为其中物品价值的最大值,问所有集合的权值之和的最小值是多少,以及达成最小值的划分方案。

不妨先把所有物品按照 \(c\) 排序,设 \(sum(S)\) 表示集合 \(S\) 的重量之和,\(high(S)\) 表示集合 \(S\) 中编号最大的物品的编号。
不难想到 \(O(3^n)\) 的状压 DP,直接设 \(f_S\) 表示划分 \(S\) 中的点的答案。为了方便优化,我们不妨钦定在进行转移 \(f_{S}+c_{high(T/S)} \to f_{T}\) \((sum(T/S)\le W)\) 时,\(high(T)>high(S)\),也就是说 \(high(T/S)=high(T)\)

然后我也不知道怎么想到的,但是我们考虑折半来优化这个转移,我们把每个 \(S\) 写成 \(LR\) 的形式,上面的转移改写成 \(f_{LR}+c_{high(R')} \to f_{L'R'}\),其中 \(L,R,L',R'\) 满足(如果 \(R'=0\) 就特殊处理,跑一开始的暴力 DP,下面默认 \(R'\ne 0\)):

  1. \(L\subseteq L',R\subseteq R'\)
  2. \(high(R)\ne high(R')\)
  3. \(sum(L'/L)+sum(R'/R)\le W\)

转移系数 \(c_{high(R')}\)\(R'\) 有关,所以我们考虑枚举 \(R'\),如果你再枚举 \(L'\) 就跟一开始的 DP 本质相同了,折半了个寂寞,于是我们考虑再枚举 \(L\)。也就是说,我们要在枚举 \(L,R'\) 之后处理掉所有 \(f_{LR} \to f_{L'R'}\) 的转移。
取出所有满足条件 1 的 \(L'\),并取出所有满足条件 1,2 的 \(R\),把他们分别按照 \(sum(L'/L),sum(R'/R)\) 排序,每一个 \(R\) 的答案 \(f_{LR}+c_{high(R')}\) 是确定的,而对于一个 \(L'\) 合法的 \(R\) 是排序后的一段前缀,因此可以枚举 \(L'\),双指针求出所有满足条件 3 的 \(R\) 的答案之和,贡献到 \(f_{L'R'}\) 即可。
:这里的排序是可以预处理的,不用枚举完 \(L,R'\) 之后再排序。

复杂度 \(O(2^{\frac{n}{2}}3^{\frac{n}{2}}+3^{\frac{n}{2}}n)=O(6^{\frac{n}{2}}+3^{\frac{n}{2}}n)\)。其中 \(O(3^{\frac{n}{2}}n)\) 是预处理排序的复杂度。

code

#include<bits/stdc++.h>
#define Debug puts("-------------------------")
#define eb emplace_back
#define fi first
#define se second
using namespace std;
const int N=22+5,mod=998244353;
pair<int,int> operator + (const pair<int,int> &x,const pair<int,int> &y){if(x.se==0) return y;if(y.se==0) return x;if(x.fi==y.fi) return {x.fi,(x.se+y.se)%mod};return min(x,y);
}
pair<int,int> operator + (const pair<int,int> &x,int d){ return {x.fi+d,x.se}; }
int n,n1,n2,W,w[N],c[N],sum[(1<<22)+5],high[(1<<22)+5];
pair<int,int> f[(1<<11)+5][(1<<11)+5]; 
vector<pair<int,int> > SL[(1<<11)+5],SR[(1<<11)+5];
void Init(){for(int S=0;S<(1<<n);S++){high[S]=-1;for(int i=0;i<n;i++) if(S>>i&1) high[S]=i+1,sum[S]+=w[i+1];} n1=n/2,n2=n-n1;for(int S=0;S<(1<<n1);S++){for(int L=S;;L=(L-1)&S){SL[L].eb(make_pair(sum[S^L],S));if(!L) break;}}for(int L=0;L<(1<<n1);L++){sort(SL[L].begin(),SL[L].end());}for(int R=1;R<(1<<n2);R++){for(int S=R;;S=(S-1)&R){if(high[R]==high[S]) continue;SR[R].eb(make_pair(sum[(R^S)<<n1],S));if(!S) break;}sort(SR[R].begin(),SR[R].end());}f[0][0]={0,1};for(int S=1;S<(1<<n1);S++){for(int T=S;T;T=(T-1)&S){if(high[T]==high[S]&&sum[T]<=W) f[S][0]=f[S][0]+(f[S^T][0]+c[high[T]]);}}
}
signed main(){double beg=clock();scanf("%d%d",&n,&W);vector<pair<int,int> > vec(n);for(int i=1;i<=n;i++) scanf("%d%d",&vec[i-1].se,&vec[i-1].fi);sort(vec.begin(),vec.end());for(int i=1;i<=n;i++) w[i]=vec[i-1].se,c[i]=vec[i-1].fi;Init();int all1=(1<<n1)-1,all2=(1<<n2)-1;for(int l=0;l<(1<<n1);l++){for(int R=1;R<(1<<n2);R++){int siz1=SL[l].size(),siz2=SR[R].size();pair<int,int> res={0,0};for(int i=siz1-1,j=0;i>=0;i--){int L=SL[l][i].se;while(j<siz2&&SL[l][i].fi+SR[R][j].fi<=W){int r=SR[R][j].se;res=res+(f[l][r]+c[high[R<<n1]]);++j;}f[L][R]=f[L][R]+res;}}}printf("%d %d\n",f[all1][all2].fi,f[all1][all2].se);cerr << "Time: " << (clock()-beg) << endl;return 0;
}

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

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

相关文章

嵌入式OS

1.嵌入式OS 嵌入式操作系统&#xff08;Embedded Operating System&#xff0c;简称嵌入式OS&#xff09;是专为嵌入式系统设计的操作系统。与通用操作系统&#xff08;如 Windows、Linux 桌面版、macOS&#xff09;不同&#xff0c;嵌入式 OS 通常具有资源占用少、实时性强、…

基于Springboot+Vue的企业采购管理系统(源码+lw+部署文档+讲解等)

课题介绍本课题针对企业采购流程繁琐、供需对接低效、采购数据零散、成本管控困难、审批流程不规范等痛点&#xff0c;设计并实现基于SpringbootVue的企业采购管理系统&#xff0c;构建集需求提报、供应商管理、采购计划制定、订单管控、入库验收、财务结算于一体的全流程采购管…

红黑set优于heap|损人利己-总价值贪心

lc1686按石头对两人的总价值&#xff08;a[i]b[i]&#xff09;降序选&#xff0c;先手优先拿总价值高的石头以最大化双方价值差简单来说就是既想自己拿得多&#xff0c;又要对手拿的少&#xff0c;那么拿对手分高的虽然自己没1&#xff0c;但对面-1了啊&#xff0c;四舍五入就相…

如何在Mac上畅玩iOS应用:PlayCover完全使用手册

如何在Mac上畅玩iOS应用&#xff1a;PlayCover完全使用手册 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover 还在为Apple Silicon Mac无法运行心仪的iOS游戏而困扰&#xff1f;想要在大屏幕上体验《原神…

FinBERT详解

FinBERT 是一种专门针对金融领域文本优化的 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;变体&#xff0c;由 Yi Yang 等人开发&#xff0c;旨在提升在金融语境下的自然语言理解能力&#xff0c;尤其在情感分析、ESG 分类、前瞻性陈述…

基于Springboot+Vue的企业数据资产登记系统(源码+lw+部署文档+讲解等)

课题介绍 本课题针对企业数据资产分散无序、登记流程不规范、权属界定模糊、生命周期管控缺失、数据价值难以挖掘等痛点&#xff0c;设计并实现基于SpringbootVue的企业数据资产登记系统&#xff0c;构建集数据资产梳理、登记备案、分类归档、权限管控、生命周期管理于一体的全…

如何让经典游戏在现代Windows系统上实现完美局域网对战

如何让经典游戏在现代Windows系统上实现完美局域网对战 【免费下载链接】ipxwrapper 项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper 还记得那些年我们通宵达旦玩《红色警戒2》、《魔兽争霸II》的时光吗&#xff1f;这些承载着青春记忆的经典游戏&#xff0c…

2026年郑州喷涂机服务商TOP5推荐:钢结构喷涂机、油漆喷涂机、防腐油漆喷涂机、无气喷涂机、双组份喷涂机、气动喷涂机、品牌适配、场景覆盖与务实服务之选 - 海棠依旧大

随着中原地区工业制造、建筑装修及防腐工程领域的品质升级,喷涂设备的适配性、可靠性及配套服务已成为保障施工效率与涂装质量的核心要素。郑州作为区域工业重镇与交通枢纽,喷涂设备市场需求旺盛,但各类服务商良莠不…

基于Springboot+Vue的前后端分离的宠物服务平台系统(源码+lw+部署文档+讲解等)

课题介绍本课题针对宠物服务行业供需对接低效、服务流程不规范、宠物档案管理零散、养宠知识获取不畅等痛点&#xff0c;设计并实现基于SpringbootVue前后端分离的宠物服务平台系统&#xff0c;构建集宠物服务预约、健康管理、用品选购、知识分享于一体的综合性宠物服务平台。系…

WechatBakTool:一键解密微信聊天记录的智能备份神器

WechatBakTool&#xff1a;一键解密微信聊天记录的智能备份神器 【免费下载链接】WechatBakTool 基于C#的微信PC版聊天记录备份工具&#xff0c;提供图形界面&#xff0c;解密微信数据库并导出聊天记录。 项目地址: https://gitcode.com/gh_mirrors/we/WechatBakTool 在…

如何突破元数据管理瓶颈:ExifToolGUI实战应用指南

如何突破元数据管理瓶颈&#xff1a;ExifToolGUI实战应用指南 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾经面对数百张照片&#xff0c;却无法快速定位特定拍摄地点&#xff1f;或者在批量处理…

音乐解放指南:5分钟解锁QMC加密音频,实现跨平台播放自由

音乐解放指南&#xff1a;5分钟解锁QMC加密音频&#xff0c;实现跨平台播放自由 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为那些被加密的音乐文件而烦恼吗&#…

基于Springboot+Vue的旅游信息咨询网站的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题针对传统旅游信息分散、咨询渠道单一、出行规划低效、用户互动不足等痛点&#xff0c;设计并实现基于SpringbootVue的旅游信息咨询网站&#xff0c;构建集信息查询、咨询服务、行程规划、互动分享于一体的综合性旅游服务平台。系统采用Springboot框架搭建高效稳定…

Umi-OCR实战指南:从基础配置到高阶优化的效率倍增技巧

Umi-OCR实战指南&#xff1a;从基础配置到高阶优化的效率倍增技巧 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitH…

VirtualMonitor虚拟显示器:突破物理限制,打造无限工作空间

VirtualMonitor虚拟显示器&#xff1a;突破物理限制&#xff0c;打造无限工作空间 【免费下载链接】VirtualMonitor 项目地址: https://gitcode.com/gh_mirrors/vi/VirtualMonitor 还在为单一屏幕无法满足多任务处理需求而困扰&#xff1f;VirtualMonitor虚拟显示器为您…

如何快速上手thuthesis:Overleaf云端写作的完整指南

如何快速上手thuthesis&#xff1a;Overleaf云端写作的完整指南 【免费下载链接】thuthesis LaTeX Thesis Template for Tsinghua University 项目地址: https://gitcode.com/gh_mirrors/th/thuthesis thuthesis作为清华大学官方LaTeX模板&#xff0c;结合Overleaf云端平…