尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

[题解]P5322 [BJOI2019] 排兵布阵

[题解]P5322 [BJOI2019] 排兵布阵
📅 发布时间:2026/6/18 10:50:55

P5322 [BJOI2019] 排兵布阵

我们可以预处理出第 \(i\) 个城堡分配 \(j\) 的兵力能获得多少的得分,记为 \(w[i][j]\)。

则每一个 \(w[i]\) 都是一个泛化物品,即价值(\(w[i][j]\))随着分配体积(\(j\))变化的物品。将两个泛化物品合并的代价是 \(O(m^2)\) 的,总时间 \(O(nm^2)\) 无法接受。

但是我们将问题过度一般化了。实际上这个泛化物品只有 \(s\) 个分段点,完全可以看作一个 \(s\) 个物品的分组背包。若按体积(兵力)为这些物品排序,它们的价值实际上相当于求了原序列的一个前缀和,即 \(i,2i,3i,\dots\)。

image

所以分组背包即可。时间复杂度 \(O(nms)\)。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=102,M=20002,S=102;
int s,n,m,a[N][S],f[M];
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>s>>n>>m;for(int i=1;i<=s;i++) for(int j=1;j<=n;j++) cin>>a[j][i];for(int i=1;i<=n;i++) sort(a[i]+1,a[i]+1+s);for(int i=1;i<=n;i++){for(int k=m;k;k--){for(int j=1;j<=s;j++){if(k>2*a[i][j]) f[k]=max(f[k],f[k-2*a[i][j]-1]+i*j);}}}cout<<f[m]<<"\n";return 0;
}

学到的:分组物品,对于每一组,若某个物品体积 \(\le\) 该组分配的体积即可选(即取 \(\max\) 而非求和),则可以通过对价值前缀和而转为分组背包。

相关新闻

  • 逆向基础--编码(001)
  • 20251027 - 倍增 ST表
  • 10-27 CSP 赛前比赛记录

最新新闻

  • 2026 安徽哪所学校护理升学强?5大高升学率中职招生名单 - 小途xt
  • NXP DPAA硬件加速实战:报文头操作与CAAM加密引擎配置详解
  • 2026年论文写作AI工具怎么用?豆包等工具详细使用教程 - 掌桥科研-AI论文写作
  • 2026滁州家长注意!离南京这么近,孩子学建筑去这所公办中职,比在南京打工强 - 我叫小周
  • 50行Python实现人脸检测:OpenCV+Haar级联原理与实战
  • 2026重庆高端珠宝首饰回收排行 权威鉴定实测靠谱商家榜单 - 名奢变现站

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号