poj 1011 Sticks

poj 1011 sticks 简单来说就是有很多长度相同的木棍,被切分为不同长度,然后要求重新拼起来,看拼起来之后,长度相同的木棍,最短是多少长度。 这里看到几个问题 拼起来之后长度应该是一样的 从条件一推断,最段长度minL应该满足total_len % minL == 0,即最小长度可以整除总长度 从结论二可以推断,拼好之后最短长度应该大于所有木棍里面最长那根木棍 同样从条件一推断,最大长度是所有木棍的总长度,也... 阅读详情

这道题是个dfs加剪枝,不剪枝过不了

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>

#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) x<<1
#define r(x) x<<1|1
#define ms(a,b) memset(a,b,sizeof(a))


using namespace std;

int n;
int stick[100];
int sum;
int vis[100];
int len;

bool cmp(const int& a,const int& b){
	return a > b;  
}

bool dfs(int itr, int num, int nowLen) {
	if (num == 0)
		return true;

	int knowNum = -1;
	for (int i = itr; i < n; i++) {
		if (vis[i] || stick[i] == knowNum)
			continue;
		vis[i] = 1;
		if (nowLen + stick[i] < len) {
			if (dfs(itr + 1, num, nowLen + stick[i]))
				return true;
			knowNum = stick[i];
		}
		else if (nowLen + stick[i] == len) {
			if (dfs(0, num - 1, 0))
				return true;
			knowNum = stick[i];
		}
		vis[i] = 0;
		if (nowLen == 0)
			break;
	}

	return false;
}

int main() {
	while (scanf("%d", &n), n != 0) {
		sum = 0;
		for (int i = 0; i < n; i++) {
			scanf("%d", &stick[i]);
			sum += stick[i];
		}

		sort(stick, stick + n, cmp);

		for (int i = stick[0]; i <= sum; i++) {
			if (sum%i != 0) continue;
			ms(vis, 0);
			len = i;
			if (dfs(0, sum / i, 0)) {
				printf("%d\n", i);
				break;
			}
		}
	}

	return 0;
}
POJ1011-Sticks-经典搜索题详解优化 Sticks http://poj.org/problem?id=1011 解题思路 1.一开始的思路是遍历木棒能组成的所有长度,然后进行许多判断;发现判断过程很复杂,做不了,就换了个思路; 2.遍历所有可能的木棒长度len,并得到木棒的个数cnt; len满足 sum%len==0; cnt=sum/len; 3.得出DFS的终止条件: 拼接成功的木棒 > cnt 或者 无法继续拼接 4 .然后就是这题的精华:各种剪枝与优化 1.木棍应从长到小遍历; 2.限制拼接一根木棒的木棍长度是递减的,因 阅读详情

相关推荐

实战:如何通过修改VTS和HTS调整GC4653 sensor帧率(附完整计算步骤)

本文以GC4653图像传感器为例,详细解析了通过修改VTS和HTS寄存器来精确调整输出帧率的完整流程。文章深入剖析了帧率计算公式FPS = PCLK / (VTS × HTS)的核心原理,并提供了从获取寄存器参数、计算目标VTS值到系统验证的实战步骤,帮助工程师掌握独立优化Sensor性能、提升低照度画质的关键技能。

gin88的博客 338

Poj 1011-Sticks

Poj 1011-Sticks   题意:有n根木棍(n 分析:这题不愧是经典中的经典,很早之前就写过,先后2次都没写出来,然后就放了一段时间,这是第三次了,终于写出来了。 基本思路是我们计算出出所有的木棍长度的长度和sum,从小到大枚举它的约数,找到第一个可行解就行了。 具体实现的话:首先,木棍有64根,搜索树是非常巨大的,如果不加任何剪枝,程序根本运行不出来,所以必须进行剪枝。 之

我的ACM,我的梦!!! 1003

【MM小贴士】关于SAP系统中关税的处理方式

的运费,这部分来讲,我们关税的计价基础,就应该是货物价值+包邮到中国港口的运费,完后进行报关操作,缴纳关税,后半段从中国港口拉回到企业里面的运输费,就会做到费用里面去,而不是计入到存货成本。1、我们自己的企业和国外厂家A购买一项物资,厂家A的报价会分成几个组成部分货物本身的价值或者货物本身的价值+到国外港口的运费或者货物本身的价值+到中国港口的运费或者货物本身的价值+包邮到你们自己企业的整体运费。所以我的关税就是不确定的。重点是运费是哪一段的运费,如何结算,结算的货币,何时能够确定运费。.........

竹大的博客 9025

POJ1011 Sticks

POJ1011 Sticks 时间限制:1 Sec内存限制:128 MB提交:43解决:8[提交] [状态] [讨论版] [命题人:admin] 题目描述 George took sticks of the same length and cut them randomly until all parts became at m...

Albert_Liuzw的博客 329

Lama:基于傅立叶卷积的分辨率鲁棒性大掩模修复

为了缓解修复网络和损失函数都缺乏有效的感受野这个问题,提出了大掩模修复(LaMa)。LaMa基于一种新的修复网络架构,该架构使用快速傅立叶卷积(FFC),具有图像范围的感受野;高感受野感知损失;大型训练掩码,释放前两个组件的潜力。

qq_44926214的博客 1417

车载与安防项目实战:如何用RK3588搭配NVP6158C实现4路AHD摄像头BT1120接入与同步预览

本文详细解析了基于RK3588处理器与NVP6158C解码芯片实现4路AHD摄像头BT1120接入与同步预览的技术方案。针对车载环视和安防监控场景,重点探讨了硬件架构设计、BT1120接口配置、多路同步机制及Android HAL适配等核心问题,提供了从底层驱动到上层应用的完整实现路径,为相关领域的工程实践提供可靠参考。

weixin_30571465的博客 484

POJ 1011 Sticks

题目网址:http://poj.org/problem?id=1011题目: Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 136183 Accepted: 32056 DescriptionGeorge took sticks of the same length and cut t

chedan666的博客 324

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability)

1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么

黑猫奥利奥的博客 3122

POJ-1011 Sticks

POJ-1011 Sticks George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many st...

我想要西瓜 198

【使用DeepSeek辅助Python接口性能自动化测试教程-实战教程】

访问DeepSeek官方网站,注册账号并获取API Key。此Key是调用DeepSeek API的必要凭证,务必妥善保管。安装时,注意勾选“Add Python to PATH”选项,以便系统能识别Python命令。确保你已安装Python 3.8或更高版本。会自动发现并执行所有以。

Dreams°的博客 2466

(五)深入理解Bluez协议栈之“GATT Server Profile”

上一篇介绍Bluez协议栈的了GAP Profile的实现,本章节我们继续介绍GATT Profile的实现,参考的程序是Peripheral。通过阅读它的实现代码可以发现,它广播部分是通过mgmt来实现的,然后在初始化完成之后,创建了一个L2CAP类型的socket,来负责实现GATT Server的逻辑。

1142

【DFS剪枝】poj 1011 Sticks

poj 1011 Sticks 链接:http://poj.org/problem?id=1011 题意: 将未知根数的相同长度的树枝随机截断,给出截断后的树枝,求原树枝最短可能的长度。 思路: 将枚举可能的长度,dfs判断长度的可行性。 剪枝:将树枝从大到小排列,如果长度大的树枝无法组合成(需判断的长度),那么不需继续判断。 在找组合时,如果无法与前一个

学无纸巾 358

TC3XX - MCAL知识点(一):新建Tc3xx EB-tresos工程

基于EB-tresos建立Hightec或者Tasking工程的时候,第一个步骤就是需要新建一个EB-tresos的工程,本文记录一下如何新建一个EB-tresos工程,以及对其进行简单的操作。那么Tc3xx的MCAL包含哪些内容呢?

梦想技术家 2968

POJ1011-Sticks

title: POJ1011-Sticks tags:来源ACwing167-木棒POJ1011-Sticks本题被称为是剪枝神题之一,因为剪枝角度多达5种,且难以想象。常规的深搜,普通剪枝无法完成此题很有可能会导致超时。剪枝五种方法列举java代码 c++代码...

持续输出,励志当全栈开发人员 166

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【POJ1011 Sticks】解题报告+思路+代码

#include #include #include #include #include //#define INPUT using namespace std; /** Problem : poj1011 - Sticks Begin Time : 13:00 p.m. 15th/mar/2012 End Time : 15:10 p.m. 15th/mar/2

c0de4fun的完美算(nei)法(he)教室-我们仍不知道,那天调用的驱动的名字。 1444

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

poj1011 sticks

传送门:poj1011 题意:给你一些长度不同的棍子,让你把他们拼成长度相同的新棍子,问最小长度是多少 枚举所有可能长度,dfs并不难写,重点是剪枝,将棍子长度按从大到小排序后从前往后dfs,这里有一点是如果把一个棍子当要组成的新棍子的第一根都无法组合成功,那么放在后面更不可能和其他棍子组成想要的长度了,可以这样考虑:如果这个棍子在后面那么多棍子都还没用的情况下都和它们组成不了想要的长度,等到

WA是一笔财富 531

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

POJ1011 Sticks dfs+剪枝

黑书上面的题目总是这么折磨人。。寒假过去十多天了。整个人都水了。到最后才发现原来这道题目还有中文版的。。。。好神奇。 这道剪枝真的很经典。寒假在家能看看这种题目效果还是很不错的。 这道题目是深搜+各种剪枝。  暴力的dfs铁定超时。   下面给出我程序中所使用的剪枝。 1:如果我现在要拼凑第i根原始木棒,我们指定一根木棒为第一个木棒,如果该木棒与剩下的木棒无论怎么组合都无法拼出原始木棒的

561

poj1011sticks题解

<br />Description George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state, but he forgot how many sticks he had originally and how long they were origi

he-honghua的专栏 1098

POJ-1011 Sticks + Python(DFS)

题目链接: # https://www.cnblogs.com/dongsheng/archive/2012/08/14/2638926.html 一注意 1.当前题目与前一篇POJ 2362 - Square + Python_xxdragon126的博客-优快云博客 的核心算法一模一样,因此,直接使用的上一篇的核心代码,仅将输入环节做了修改。 2.修改内容包括: 2.1题目给转化为,如何对一组数据进行等分,并要求等分的数量最大,即每一份的长度最小。 ...

xxdragon126的博客 529

POJ 1011 Sticks(DFS + 剪枝)

POJ 1011 Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 160960 Accepted: 38639 Description George took sticks of the same length and cut them randomly until all parts be...

ZQYnn's blog 272

搜索+剪枝——POJ 1011 Sticks

搜索+剪枝——POJ 1011 Sticks 博客分类:  算法     非常经典的搜索题目,第一次做还是暑假集训的时候,前天又把它翻了出来,本来是想找点手感的,不想在原先思路的基础上,竟把它做出来了而且还是0ms过得。仔细想想,对搜索又有了一点点认识。     题目要求将一系列的sticks重新组合,形成若干相等相等长度的木棒,且尽量使木棒长度最小,如果数据量比较小的

在思索中前行! 1127

poj 1011 sticks 解题。

看了那么多代码 这个算是比较简单而且算是最好的了。。。。 1 #include<iostream> 2 using namespace std; 3 int finish; 4 int length; 5 int in[50]; 6 //count:棒子的总数(如果为0则结束) 7 //len 目前检察棒子长度的剩余量 8 //plen...

weixin_30449453的博客 111

poj dfs相关之1011 Sticks

poj dfs相关之1011 Sticks

ziqi9216的博客 247

poj 1011 Sticks(dfs+剪枝)

poj 1011 Sticks(dfs+剪枝)

PKU_ZZY的博客 1142
上一篇: poj 1021 2D_NIM
下一篇: poj 1012 Joseph
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值