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

#题解#洛谷P1120 小木棍#搜索#剪枝

#题解#洛谷P1120 小木棍#搜索#剪枝
📅 发布时间:2026/6/20 13:34:37

P1120 小木棍 - 洛谷

分析

  1. 求最小可能长度len,我们从小到大枚举len,然后dfs搜索是否存在一种短棍的分配方法,使得每根长棍长度为len。

  2. dfs(u,k,p)当前所拼长棍剩余长度u,剩余要拼的长棍个数k,当前可用短棍最长长度

  3. 搜索剪枝:

  4. sum==len * cnt;//sum为短棍长度和,cnt为长棍个数

  5. 因为长度短的短棍更灵活,我们先把长度较长的短棍用完

  6. 若某长棍第一个短棍选p(可用的最长)导致失败,那么该长棍第一个短棍要选长度小于p的

  7. 若某长棍最后一个短棍选p导致失败,该长棍最后一个短棍要选更短的

代码实现

#include<bits/stdc++.h>
#define int  long long
#define endl '\n'
using namespace std;const int maxn = 66;
int n, sum, mx = maxn, d;
int len[maxn], a[maxn], pre[maxn];void dfs(int u, int k, int p)//当前长棍剩下u没拼,剩下k个长棍没拼,当前要拼地短棍长度(拼后是组成中最短)
{if (u == 0)//当前长棍拼好了,拼下一根{dfs(d, k - 1, a[n]);return ;}if (k == 0)//所有长棍拼好了,输出答案{cout << d;exit(0);}p = p < u ? p : u;//要拼地短棍不能比长棍剩余长度大while (p and len [p] == 0) //从p/u中较小地那个向下查询第一个出现的能用的短棍长度p--;while (p)if (len[p]){--len[p];dfs(u - p, k, p);++len[p];if (u == p or u == d)return ;//若用了p刚好拼完长棍但最终失败;;若该长棍的第一个短棍选择p但最终失败p = pre[p];}elsep = pre[p];
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1, x; i <= n; i++){cin >> x;sum += x;++len[a[i] = x];}sort(a + 1, a + 1 + n);for (int i = 1; i <= n; i++)if (a[i] != a[i - 1])pre[a[i]] = a[i - 1];for (d = a[n]; (d << 1) <= sum; ++d){if (sum % d) continue;dfs(d, sum / d, a[n]);}cout << sum;return 0;
}

相关新闻

  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • 实时图形工具包GLG Toolkit:工业领域HMI数据可视化的优选产品
  • 使用Junit测试

最新新闻

  • 终极游戏分屏指南:让任何PC游戏都能本地多人对战
  • 本地代码AI工作流:Ollama+VSCode替代Codex实战指南
  • 沧州家长口碑优选!2026单招择校高满意度机构,差异对比一目了然 - 快乐的大脚123
  • 2026 年邯郸厨卫屋顶防水修缮三家对比测评 吉修匠 99.8 分 - 吉修匠
  • 2026 年 6 月最新资讯:萧邦国内全部官方维修门店地址全面更新公示,专属全国服务热线同步上线运行 - 亨得利中国服务中心
  • 卡地亚 2026 年 6 月全国官方维修网点实地调研验证报告:统一服务流程全面更新,专属售后体验迎来系统性全新升级 - 卡地亚中国服务中心

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 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 号