给定木棍序列,求解能将木棍拼成相同长度的数根长木棍的情况下长木棍长度的最小值。

/*hdu1455dfs
*/
#include<bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef long long ll;
typedef unsigned long long ull;
#define pf printf
#define prime1 1e9+7
#define prime2 1e9+9
#define scand(x) scanf("%llf",&x)
#define f(i,a,b) for(int i=a;i<=b;i++)
#define scan(a) scanf("%d",&a)
#define dbg(args) cout<<#args<<":"<<args<<endl;
#define pb(i) push_back(i)
#define ppb(x) pop_back(x)
#define maxn 100 int a[maxn],used[maxn],n;
int tot,ans,target;
int flag;
void dfs(int now,int finish,int pos)
{
if(flag)return;
if(finish==tot/target)
{
flag=;
return;
}
// if(num+a[n]>target)return;//最短的一根木棍和当前木棍无法拼成,则搜索失败
f(i,pos,n)
{
if(used[i])continue;
if(a[i]+now>target)continue;
used[i]=true;
if(now+a[i]==target)
{
dfs(,finish+,);
}
else
{
dfs(now+a[i],finish,i+);
}
if(flag)return;
used[i]=false;
if(!now)return;//数根已经可以拼成target长度,但是剩余木棍中较长的一根作为首选无法达成要求,说明第一根会被废弃
while(a[i]==a[i+]&&i+<=n)i++;//前面用相同长度的木棍,无法拼成,则后面用同样长度的也不能拼成
}
}
int main()
{
std::ios::sync_with_stdio(false); while(scan(n)==&&n)
{
flag=;
tot=;
ans=;
f(i,,n)
{
scan(a[i]);
tot+=a[i];
}
sort(a+,a+n+,greater<int>());//降序 ,总是现用最长的木棍最为第一根检查是否可以拼接
f(i,a[],tot) //实际上最长不可能超过tot/2,
{
if(tot%i==)
{
memset(used,,sizeof(used));
target=i;
dfs(,,);
if(flag)
{
ans=target;
break;
}
}
}
if(!flag)pf("%d\n",tot);
else pf("%d\n",ans);
} }

最新文章

  1. Visual Studio Code 智能提示文件
  2. 渗透杂记-2013-07-13 Windows XP SP2-SP3 / Windows Vista SP0 / IE 7
  3. matplotlib绘制动画
  4. Puppet3在CentOS6.5集群下的安装
  5. 【云计算】docker registry v2简介
  6. ZOJ2770 Burn the Linked Camp(差分约束系统)
  7. 微信企业号办公系统-JSSDK上传图片(多图上传)
  8. bzoj 1031: [JSOI2007]字符加密Cipher 後綴數組模板題
  9. Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法
  10. java_ java多线程返回函数结果
  11. webapp前端开发软键盘与position:fixed为我们带来的不便
  12. SpringMVC文件上传报错org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.MultipartHttpServletRequest
  13. 数据库SQL优化
  14. 开源前端脚本错误监控及跟踪解决项目-BadJS 试用
  15. Python这么强大, 怎样才能快速入坑?
  16. Gird Layout代码解释
  17. java泛型的理解
  18. linux下配置nginx使用ftp目录作为静态资源文件的目标目录
  19. ovs-appctl 命令合集
  20. dropwizard metrics - 基本使用介绍

热门文章

  1. 吴裕雄--天生自然 python数据分析:加纳卫生设施数据分析
  2. 改变生活的移动计算——感受 MobiSys 2015
  3. 添砖加瓦:[OpenCV]入门(一)
  4. MDEV入门
  5. IP 数据报
  6. 参考C# 使用 System.Web.Script.Serialization 解析 JSON
  7. Neural Turing Machine - 神经图灵机
  8. tfgan折腾笔记(一):核心功能简要概述
  9. Windows激活服务器搭建
  10. 峰哥说技术:09-Spring Boot整合JSP视图