洛谷p1120小木棍(剪枝优化)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
const int maxn = 200100;
int a[70];
int vis[70];
int n;
int flag;
int len;
bool cmp(int a,int b)
{
    return a>b;
}
void dfs(int num,int nlen,int pos)       //还差几根    当前长度   当前下标
{
    if(num==0){
        flag=1;
        return;
    }
    if(nlen==len)
    {
        dfs(num-1,0,1);
        return;
    }
    for(int i=pos;i<=n;i++)
    {
        if(!vis[i] && nlen+a[i] <= len)
        {
            vis[i] = 1;
            dfs(num,nlen+a[i],i);
            if(flag) return;
            vis[i] = 0;
            //if(nlen==0) break;
            if(len-nlen==a[i] || nlen==0) break;  // 二
            while(i+1 <= n && a[i+1] == a[i]) i++;  // 三
        }
    }
}
int main()
{
    int sum=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>50)
        {
            i--;
            n--;
        }
        else sum+=a[i];
    }
    sort(a+1,a+n+1,cmp);
    for(int i=a[1];i<=sum;i++)
    {
        len=i;
        for(int i = 0; i < n; i++) vis[i] = 0;
        if(sum%i==0)             // 一
        dfs(sum/i,0,1);
        if(flag) break;
    }
    printf("%d\n",len);
    return 0;
}
												
											洛谷p1120小木棍(剪枝优化)的更多相关文章
- 洛谷P1120 小木棍 [数据加强版](搜索)
		
洛谷P1120 小木棍 [数据加强版] 搜索+剪枝 [剪枝操作]:若某组拼接不成立,且此时 已拼接的长度为0 或 当前已拼接的长度与刚才枚举的长度之和为最终枚举的答案时,则可直接跳出循环.因为此时继续 ...
 - 洛谷P1120 小木棍
		
洛谷1120 小木棍 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长 ...
 - 【题解】洛谷P1120 小木棍(搜索+剪枝+卡常)
		
洛谷P1120:https://www.luogu.org/problemnew/show/P1120 思路 明显是搜索题嘛 但是这数据增强不是一星半点呐 我们需要N多的剪枝 PS:需要先删去超出50 ...
 - 洛谷 P1120 小木棍 [数据加强版]解题报告
		
P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它 ...
 - 洛谷——P1120 小木棍 [数据加强版]
		
P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍 ...
 - 洛谷 P1120 小木棍 [数据加强版]
		
P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它 ...
 - 洛谷 P1120 小木棍 dfs+剪枝
		
Problem Description [题目链接] https://www.luogu.com.cn/problem/P1120 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不 ...
 - 洛谷P1120 小木棍 [搜索]
		
题目传送门 题目描述乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍 ...
 - 洛谷P1120小木棍[DFS]
		
题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度. 给出每段小木棍的长度,编 ...
 
随机推荐
- java8 Optional  类
			
package jdk180reduce; import java.util.ArrayList; import java.util.HashMap; import java.util.List; i ...
 - 计算机网络之tcp三次握手
			
客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西:由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客 ...
 - TCP协议粘包问题详解
			
TCP协议粘包问题详解 前言 在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题.本章主要介绍TCP粘包的原理与其三种解决粘包的方案.并且还会介绍为什么UDP协议不会产生粘包. 基 ...
 - linux下安装jdk并设置环境变量
			
首先去官网下载jdk安装包 我这里下载的是jdk7,因为jdk8之后做了很大的改动,所以现在常用的还是jdk7.下载地址:www.oracle.com/technetwork/cn/java/ja ...
 - 无题II HDU - 2236 【二分图+二分答案】
			
题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据第一行输入一 ...
 - 【总结-前台发送后台接收表单】MVC提交表单的四种方式
			
https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...
 - 报错 500 - Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException的解决放案
			
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/loveliness_peri/artic ...
 - Linux虚拟网络:Docker网络知识之基础篇
			
我们在工作中应用了docker容器化技术,服务的部署.维护和扩展都方便了很多.然而,近期在私有化部署过程中,由于不同服务器环境的复杂多变,常常遇到网络方面的问题,现象为容器服务运行正常,但宿主机.容器 ...
 - 火车运输(最大生成树+lca) 洛谷P1967
			
货车运输 题目描述 \(A\) 国有 \(n\) 座城市,编号从 \(1\) 到 \(n\) ,城市之间有 \(m\) 条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 \(q\) 辆货车 ...
 - JVM零碎知识
			
JVM常见XX参数 查看JVM默认值 常用基本配置参数 生产环境服务器变慢,如何诊断 生产环境CPU占用过高,如何诊断 JDK自带的JVM监控和性能分析工具 jps(虚拟机进程状况工具) jinfo( ...