P1120 小木棍 [数据加强版] & 1442:【例题3】小木棍

博客主要介绍了P1120和1442两道关于小木棍的题目,通过题目分析、疯狂剪枝两个部分详细讲解解题思路。在题目分析中,提到了自动过滤掉长度大于50的木棍,并采用暴力搜索策略。疯狂剪枝环节,列举了五个剪枝策略,包括对木棍进行排序、从最大木棍开始枚举、提前结束搜索等,以提高算法效率。代码部分未给出具体实现,但暗示了存在优化空间。
摘要由CSDN通过智能技术生成

题目分析

  • 要自动滤掉大于50的长度… 心中******** 已开启自动过滤
  • 剩下的,纯暴搜: 就是枚举原始木棍长度,然后试着拼

疯狂剪枝

  • 剪枝1:排序,剪枝的根本(正序倒序无所谓,别人都是倒序,就我是正序)+计算木棍长度总和
  • 剪枝2:由于原始木棍一定大于等于当前最大的木棍,所以从当前最大的木棍开始枚举原始木棍长度。枚举到木棍长度总和。(还可以有一个小优化,见代码)
  • 剪枝3:如果搜到答案直接退出 这不是废话吗
  • 剪枝4:感谢排序,如果当前长度的木棍不能搜到答案,那么后面等长的木棍也不行。
  • 剪枝5:再次感谢排序,我们可以把当前木棍的编号传下去,下一次搜更短的即可。

代码

#include<bits/stdc++.h>
using namespace std;
int n,s,m,u[1001],l,a[1001],ans,sum;
inline void check(int last,int t,int k){
   
	if(ans) return;
	if(t==s){
   
		ans=l;
		return;
	}
	for(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值