当前位置: 首页 > 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.rkmt.cn/news/88992.html

相关文章:

  • 毕业设计实战:基于Java+MySQL的校园二手书交易平台设计与实现,从需求到上线全流程避坑指南!
  • 实时图形工具包GLG Toolkit:工业领域HMI数据可视化的优选产品
  • 使用Junit测试
  • 人类文明可通过技术手段(如加强航天器防护、改进电网设计)缓解地球两极反转带来的影响
  • 智能客服
  • ComfyUI由浅入深全方位,AI生图,AI生成视频,AI动画教程
  • 决策树模型实战指南:避免过拟合、欠拟合与无关特征
  • YashanDB数据库的读写分离策略分析
  • 2025年最后一个月,公司需要注意什么?
  • 可信数据空间:驱动社会高质量发展的“数字基石”,必要性无可替代
  • 自动驾驶汽车与利益相关者互动的功能安全与网络安全分析高效的方法
  • HarmonyOS 5 极致动效实验室:给 UI 注入“物理动效”
  • springboot基于vue的比亚迪新能源汽车销售系统的设计与实现_1061pdmq
  • springboot基于vue的拜泉县房屋拆迁安置信息管理系统设计与实现_yt2m39o4
  • springboot基于vue的故宫博物馆文创网店商城系统的设计与实现_oj61901i
  • 什么是UUID,怎么组成的?
  • YashanDB数据库的多活架构设计及实施要点.
  • Simple Form性能优化完整指南:5个实用技巧让Rails表单快如闪电
  • Vue Flow与Pinia状态管理实战指南:构建高效可视化应用
  • YashanDB数据库的多活架构设计与实施经验分享
  • 为什么你的滑动窗口总是写不对?
  • springboot基于vue的春节物资购买平台的设计与实现_88a5r046
  • AMD ROCm平台上的YOLOv8目标检测:从入门到精通的5步优化指南
  • GBase 8a数据库集群硬件部署安装建议
  • YashanDB数据库的多维度安全审计体系解析
  • 智能视频生成新纪元:双帧驱动下的创意革命
  • 如何快速上手GLM-4-9B:智谱AI最新开源大语言模型完整指南
  • GBase 8a数据库NUMA绑定建议
  • IDEA(2020版)实现HttpServletResponse对象
  • YYEVA动态MP4播放器:让视频资源真正“动“起来