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

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

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;
}
http://www.jsqmd.com/news/78989/

相关文章:

  • 云服务器的核心优势
  • 2025安全婴儿面霜测评:华西珐玛领衔,敏宝护理指南 - 资讯焦点
  • PyCausalSim:基于模拟的因果发现的Python框架
  • 爬youtube视频笔记
  • 使用vscode运行python,解释器为anaconda的虚拟环境,使用pip命令安装库失败解决方案
  • 某游戏大厂的常用面试问题解析:Netty 与 NIO - 指南
  • 软件工程学习日志2025.12.12
  • 云端算力:数字时代的核心引擎与创新基石
  • 家乐事净水器加盟费多少?0加盟费+装修补贴+区域保护,全程扶持解读 - 资讯焦点
  • 病毒学研究的关键工具:重组病毒蛋白的技术解析与应用实践
  • zz深入了解LlamaIndex实现Agent代码和原理
  • 搜维尔科技:Xsens独立项目-面向独立工作室的高端动作捕捉
  • 2025年度活动板房厂家TOP5实力评测:资质口碑场景适配全维度选型指南 - 资讯焦点
  • 解码智能指针
  • 毕业设计实战:基于SSM+MySQL的药店管理系统设计与实现,从需求到测试轻松通关!
  • linux: gdb调试器
  • 6 个最佳开源 AI 仪表盘工具
  • 红队日记 --- W1R3S
  • 深夜炸场!GPT-5.2发布;Meta被曝用阿里千问优化新模型;马斯克点赞腾讯游戏业务:他们的品味非常好 | 极客头条
  • 毕业设计实战:基于SSM+MySQL的图书商城管理系统设计与实现,从需求到测试全流程拆解,新手也能轻松通关!
  • springboot基于vue的承德市养老院智慧健康检测系统_ 用药提醒 一键呼叫 1f16uvca
  • Kate 高级文本编辑器 v26.03.70 官方中文版
  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • java <T> 是什么?
  • Python 面向对象核心概念梳理
  • 毕业设计实战:SpringBoot教学资料管理系统,从0到1完整开发指南
  • RPM构建依赖仓库变更管理策略:从混乱到可控
  • 边缘计算机设备管理系统搭建全流程技术攻略
  • 美颜SDK算法工程师实践笔记:滤镜与特效模块的可维护性设计
  • 【RCE】利用 Python 沙箱绕过实现任意代码执行的完整案例分析