POJ 1011 Sticks(经典dfs)

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理 软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提... 阅读详情

Language:
Sticks
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 120720 Accepted: 27951

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 originally. Please help him and design a program which computes the smallest possible original length of those sticks. All lengths expressed in units are integers greater than zero.

Input

The input contains blocks of 2 lines. The first line contains the number of sticks parts after cutting, there are at most 64 sticks. The second line contains the lengths of those parts separated by the space. The last line of the file contains zero.

Output

The output should contains the smallest possible length of original sticks, one per line.

Sample Input

9
5 2 1 5 2 1 5 2 1
4
1 2 3 4
0

Sample Output

6
5

Source



题意:给你紧跟棍子,问可能是哪几根相同的棍子截成的,求可能的棍子的最小值


很难的dfs,剪枝很重要,我也是看别人题解的⊙﹏⊙b汗,解释在代码中




#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;

#define N 105

int a[N],len,n;
int vis[N],sum;

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

bool dfs(int pos,int temp,int cut)
{
    if(cut==sum/len)  //拼凑成功
        return true;

    int i;

    for(i=pos;i<n;i++)
    {
        if(vis[i]==0&&temp+a[i]==len)
        {
            vis[i]=1;
            if(dfs(0,0,cut+1)) //记住前面可能有没有用到的棍子,所以从0开始(下一个dfs会寻找没有用到的棍子)
                return true;

            vis[i]=0;//我不是很清楚这个地方为什么变回来⊙﹏⊙b汗,如果5是所需的,不用5用3+2会不一样????
                     //还有不变回来会错,求路过大神指点迷津
            return false;  //这是因为上面5是所需,取5没用(接下来拼凑不成),那么取2+3也没有,因为2+3比5灵活
        }
        else
            if(vis[i]==0&&temp+a[i]<len)
        {
            vis[i]=1;
            if(dfs(i+1,temp+a[i],cut))
                return true;

            vis[i]=0;
            if(temp==0)  return false;

            while(a[i]==a[i+1])//如果上一次取5没有,这次取5也拼不好
                i++;
        }
    }
    return false;
}

int main()
{
    int i;
    while(scanf("%d",&n),n)
    {
        sum=0;

        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            sum+=a[i];
        }

        sort(a,a+n,cmp);  //降序

        for(len=a[0];len<=sum;len++)  //棍子不比比最长的段短  
        {
            if(sum%len)  continue;  //肯定是该长度的倍数

            memset(vis,0,sizeof(vis));

            if(dfs(0,0,0))
            {
                printf("%d\n",len); 
                break;
            }
        }
    }
    return 0;
}






Linux ARM平台开发系列讲解(网络篇)1.3 MDIO总线设备device和设备driver匹配 在设备和驱动都载入内核后,设备和驱动是如何匹配起来的呢?其实他们就是通过的唯一标识phyID进行匹配phy_dev和phy_drv是通过phy_bus_match函数进行匹配,匹配成功后会建立链表链接,具体流程如下图: 返回总目录...... 阅读详情

相关推荐

手把手教你用Arduino IDE玩转ESP32-S3-wroom(附串口调试技巧)

本文详细介绍了如何在Arduino IDE环境下配置和使用ESP32-S3-WROOM模块,包括开发环境搭建、硬件连接、程序烧录及高级调试技巧。通过实战步骤和常见问题解决方案,帮助开发者快速上手这一高性能Wi-Fi/蓝牙双模模组,提升物联网开发效率。

weixin_30487201的博客 292

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

Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程

本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。

weixin_29196891的博客 364

hdu1455 && poj1011 Sticks(深度优先搜索 DFS 经典剪枝 详解)

这道题在两个OJ上都有 POJ地址 http://poj.org/problem?id=1011 HDU地址 http://acm.hdu.edu.cn/showproblem.php?pid=1455 Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12929

ACMan 637

2026年数据中心运行与管理专业人才培养基地建设方案(高职、数据中心运行与管理新专业、人才培养、专业代码:510310)

摘要: 为响应国家“东数西算”战略和数字经济需求,我校拟联合行业领军企业建设数据中心运行与管理人才培养基地。项目基于国家政策引导和产业快速发展背景,针对行业10万人才缺口,对标教育部新设专业标准(510310),分三阶段实施五年规划:专业奠基(2026-2028)、内涵深化(2028-2029)、辐射引领(2030-2031)。建设内容涵盖校企协同岗位能力分析、模块化课程开发(如网络管理、自动化运维等)、实训基地搭建及“课证融通”培养模式,重点培养基础设施、网络服务、运维托管三类岗位技能人才,目标建成区域性

啊碧根果的博客 1685

YOLOv11改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计

实时检测器架构的轻量级设计GsConv。

Limiiiing的博客 2311

poj(1011)——Sticks(经典的dfs+剪枝)

题目的大致意思是: 现在有n根木棍,然后需要把它们拼成同样长度的木棍,问满足这个条件的最短的长度是多少? 想法嘛:那肯定是dfs把长度搜一遍就好,但问题的关键是这里会超时。那么就要用到剪枝的原理了。 以下部分是来自于pku的gw老师说哒 1)不要在同一个位置多次尝试相同长度的木棒(在某一次拼接时选择长度为s的木棒导致拼接失败,则在同一位置尝试下一根木棒时,要跳过所有长度为s的木棒) 2)

ACM_hades的梦想之路 5700

部署与可视化系统:移动端落地保姆级教程:YOLOv8 转换为 NCNN 并封装进 Android App 调用摄像头实时检测

本文介绍了在移动端部署YOLOv8模型的最佳实践。通过实测数据对比,采用NCNN框架在骁龙865设备上可实现35+FPS的实时推理性能。文章详细分析了NCNN相比TFLite、MNN等框架的优势,包括更高的ARM CPU性能、更优的Vulkan GPU加速和更小的模型体积。同时提供了从PyTorch模型到NCNN格式的完整转换流程,包括FP16优化和INT8量化方法,并重点解析了YOLOv8特有的输出格式处理要点。建议开发者先在Python环境验证NCNN推理流程,再部署到Android平台,以确保最佳性能

ZXSXJ的博客 209

POJ 1011 Sticks 经典的dfs+剪枝

题目点我 非常经典的搜索题目。 题目描述:乔治拿来一组等长的棍子,将它们随机地裁断(截断后的小段称为木棒),使得每一节木棒的长度都不超过50个长度单位。然后他又想把这些木棒恢复到为裁截前的状态,但忘记了棍子的初始长度。 请你设计一个程序,帮助乔治计算棍子的可能最小长度。每一节木棒的长度都用大于零的整数表示。基本思路是从木棒中最长长度max{Li}max\{L_i\}到总长度的一半totalLe

w1d2s的专栏 526

【图像去噪】论文复现:CLIP用于图像去噪提升泛化性!CLIPDenoising的Pytorch源码复现,跑通CLIPDenoising全流程,图文结合,网络结构梳理和拆解,对应源码注释!

论文题目:Transfer CLIP for Generalizable Image Denoising —— 用于可泛化图像去噪的转移CLIP。【图像去噪】论文精读:Transfer CLIP for Generalizable Image Denoising(CLIPDenoising)CLIPDenoising理论部分详解见上面对应的论文精读,本文以源码为主,理论部分只是粗略回顾。启发:多看其他领域的文章,分析是否能应用在去噪领域,这是产生idea的要素之一;

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1413

【ESP 保姆级教程】第三方库篇 ——TimeLib库,一个非常Nice的时间库,结合第三方进行校正时间

Time,这是一个为Arduino提供时间支持的库。 这个库的例子中会教会我们多种方式去获取时间: - 一个`RTC`时钟 - 网络`NTP`时间 - `GPS`时间

单片机菜鸟哥的博客 3674

poj 1011 Sticks - 经典DFS

点击打开题目链接 //poj1011经典搜索 #include #include #include using namespace std; int a[65]; bool vis[65]; int n; int dfs(int len,int need_len,int num) /*三个系数分别代表 当前的搜索长度, 达到目的要求还需要的 长度, 还未拼接的木棒个数 */ {

Fighting_Dream 623

Flink CDC 中 StartupOptions 模式详解

Flink CDC 的 StartupOptions 模式用于指定作业启动时从源数据读取数据的起始位置,不同的模式适用于不同的业务场景,可满足多样化的数据处理需求,主要有 Initial 模式、Earliest 模式、Latest 模式、SpecificOffset 模式和 Timestamp 模式。

RodJohnsonDoctor的专栏 849

POJ 1011 Sticks 经典dfs + 剪枝

题意:给n(n 题解:经典dfs+剪枝。总结起来三个剪枝,具体见代码。 Sure原创,转载请注明出处 #include #include #include #include using namespace std; const int maxn = 70; int stick[maxn]; bool vis[maxn]; int sum,n,cur; bool cmp(

Uhh, call me zacky NOW!!! 745

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 1011 Sticks(很经典的DFS+减枝)

Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 153856   Accepted: 36719 Description George took sticks of the same length and cut them randomly until all parts b...

PleasantlY1的博客 399

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[经典DFS]poj1011Sticks

这题是我遇到的最卡剪枝的题了.很显然的dfs,代码

When you go away 851

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

poj 1011 Sticks 经典dfs+剪枝

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 stick

呼,是出一口气;吸,是争一口气! 609

poj 1011 Sticks (经典dfs)

原题友情链接~点击此处打开~ 传说中的经典dfs。果然剪枝很恶心~。不过话说理解题意也花了好长时间。 先说下题目大意: Sample中有一个n表示短棍有多少个,下一行中依次输入这n个短棍的长度。然后告诉你说这n根短棍都是由好多根长度相同的长棍通过切割得到的,然后让你求出原来长棍的最短长度。 分析思考~ 1。原来长棍的长度为initlen,那么initlen的长度范围是[maxle

多啦A梦也会有好多的烦恼 729

poj 1011 Sticks(经典深搜dfs+剪枝)

1.枚举所有可能的所组成的长度 2.深搜 两个状态(a,b) a:没有用过的棍的个数 b:当前要组成的棍还需要的长度 初始状态:(n,i) 终止状态:(0,0) 3.剪枝 未剪枝的dfs: bool dfs(int a,int b) {     if(a==0&&b==0)     {         return true;     }     if(b==

Jeromiewn的博客 800

Sticks POJ - 1011 经典dfs..

参考:http://www.hankcs.com/program/algorithm/poj-1011-sticks.html#include<bits/stdc++.h>using namespace std; #define N 51 int n;int finish; int in[N]; int length; void check(int count,int len,int plen){

now_ing的博客 358

POJ 1011 Sticks (经典DFS)

Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 137449   Accepted: 32363 Description George took sticks of the same length and cut them randomly until

Calm微笑 363

poj 1011 Sticks(经典DFS+剪枝)

题意:给出n根小棒的长度stick[i],已知这n根小棒原本由若干根长度相同的长木棒(原棒)分解而来。求出原棒的最小可能长度。 先说先具体的实现:求出总长度sum和小棒最长的长度max,则原棒可能的长度必在max~sum之间,然后从小到大枚举max~sum之间能被sum整除的长度len,用dfs求出所有的小棒能否拼凑成这个长度,如果可以,第一个len就是答案。 下面就是关键的了,就是这道...

weixin_30673611的博客 107

poj 1011 Sticks(经典搜索问题:DFS+剪枝)

题目:出自http://poj.org/problem?id=1011 转自:http://www.qiyeku.com/xinwen/654439.html 描述:给出一定数量的小木棒的长度,它是由等长的若干木棒随意砍断所得到的。对于给定的一组小木棒,请求出原始木棒的最小长度。 思路:              1.看到这个题,就是要把小棒一个个进行比较,看能不能恢复若干个原棒。但这样枚

继续微笑lsj 2574

poj 1011 Sticks 经典的深搜(dfs)+ 强剪枝

Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 131671   Accepted: 30906 Description George took sticks of the same length and cut them randomly until a

qiuxueming_csdn 477

POJ 1011 Sticks (DFS +强力剪枝 (经典))

Sticks

Tc的专栏 985
上一篇: POJ 3368 Frequent values(线段树区间合并)
下一篇: poj 1200 (hash)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值