- 浏览: 121696 次
- 性别:
- 来自: 北京
-
最新评论
一直没想好怎么搜索,所以一直没写,最近看到一段细节写得非常好的代码,于是把这道题AC了,感觉这段搜索写得灰常强大,短而效率高
原代码的地址是
http://www.cnblogs.com/lotus3x/archive/2008/07/25/1251552.html
#include <cstdio> #include <algorithm> #include <functional> using namespace std; const int maxN = 64 + 5; int n, stick[maxN], len, m; bool used[maxN] = {false}, done; void dfs(int k, int now, int cnt) { if (cnt == m) done = true; else if (now == len) dfs(0, 0, cnt + 1); else { int pre = -1; for (int i = k; i < n; ++i) if (!used[i] && stick[i] != pre && now + stick[i] <= len) { used[i] = true; pre = stick[i]; dfs(k + 1, now + stick[i], cnt); used[i] = false; if (k == 0 || done) return; } } } int main() { while (scanf("%d", &n), n > 0) { int sum = 0; for (int i = 0; i < n; ++i) { scanf("%d", &stick[i]); sum += stick[i]; } sort(stick, stick + n, greater<int>()); done = false; for (len = stick[0]; len <= sum; ++len) if (sum % len == 0) { m = sum / len; dfs(0, 0, 0); if (done) break; } printf("%d\n", len); } return 0; }
原代码的地址是
http://www.cnblogs.com/lotus3x/archive/2008/07/25/1251552.html
发表评论
-
lower_bound and upper_bound
2012-02-09 00:36 1200/** * @brief Finds the ... -
HDU 3954
2012-02-05 10:43 876线段树变种,也是在2logn段上面做文章 /* * ... -
HDU 4027
2012-02-04 22:09 905线段树变种 在2logn段上面做文章,swap(x, y)太阴 ... -
ICPC编码建议
2011-10-28 09:52 965写代码最重要的是清晰,包括思路的清晰和代码结构的清晰。我们无法 ... -
[转载]TopCoder插件
2011-09-08 22:13 1031转载自:http://acm.cugb.edu.cn/blog ... -
UVALive 5112 - Sales Prediction
2011-01-06 10:19 1241封装了矩阵类 比赛做得很郁闷,为什么别人写得很长、很罗嗦的代码 ... -
hdu 3236
2010-12-12 14:10 845终于能过这道题了,算是背包必做题之一吧 /* * Au ... -
pku 1018
2010-12-11 15:18 663写了两三个版本,最后这个效率最高 #include < ... -
布斯(Booth)乘法
2010-10-07 19:59 1188源自http://watashi.ws/blog/1515/z ... -
高斯消元
2010-10-07 14:18 852import java.util.*; import j ... -
整数划分
2010-10-07 10:38 870#include <cstdio> #inc ... -
Treap
2010-09-18 22:19 1030// Treap // Tested: bjtu1057 ... -
矩阵快速幂
2010-09-18 14:24 1082typedef LL matrix[55][55]; ... -
maximum clique 最大团
2010-09-02 18:12 1190最大团模板 #include <cstdio> ... -
计算Jacobi符号
2010-08-31 13:15 1360Quadratic reciprocity The Jacob ... -
Java 高效I/O
2010-08-19 16:54 830static BufferedReader cin = ... -
DLX pku 3076
2010-08-11 23:45 939标准数独,精确覆盖 // pku3076.cpp #in ... -
DLX hust 1017
2010-08-11 16:50 895“精确覆盖”问题 #include <cstdio& ... -
DLX hdu 3498
2010-08-11 16:48 1090“多重覆盖”或“重复覆盖”问题 #include < ... -
hdu 3509
2010-08-09 11:22 1040推导公式的题目,矩阵幂关键就在于构造系数矩阵 备忘: S(n, ...
相关推荐
【标题】"POJ1011 - Sticks" 是一个经典的计算机编程竞赛题目,源自北京大学的在线评测系统POJ(PKU Online Judge)。这个题目挑战程序员解决与几何图形和数学逻辑相关的问题。 【描述】该题目的核心是求解在二维...
与同类题目比较,如线性情况的1011 Sticks、二维情况的1020 Anniversary Cake以及需要坐标变换的1069 The Bermuda Triangle等,本题作为三维情况,其复杂度达到了顶峰。 #### 解题思路 解题的关键在于良好的搜索...
这份"Pku题目分类.doc"文件提供了北京大学(Peking University, PKU)编程竞赛中的一些题目分类,涵盖了许多不同的算法和问题类型。以下是对这些标签和题目类型的详细解释: 1. **送分题**:这类题目通常相对简单,...
#### POJ 1011: sticks 此题描述为“sticks”,可能是一个经典的棒子问题,可以通过广度优先搜索来解决。题目要求找到将一定数量的棍子排列成特定形状的方法。这个问题的关键在于如何有效地遍历所有可能的排列组合...
【标题】"ucm.zip_数值算法/人工智能" 涉及的是在编程竞赛中的一道题目,PKU第1011题的源代码,该题目与数值算法和人工智能有关。这通常意味着我们需要解决一个需要用到数值计算或者智能优化方法的问题。 【描述】...
**案例分析:Pku1011—Sticks** 题目描述:给定一系列木棍的长度,需要将它们分成若干组,使得每组中的木棍可以组成一个三角形。此类问题可以通过状态空间搜索来解决,通过构建一个状态空间来表示所有可能的分组...
8. **搜索与回溯**:如1011 Sticks(棍子问题)、1012 Joseph(约瑟夫问题)等,需要运用深度优先搜索或广度优先搜索等方法。 9. **模拟题**:如1099 Square Ice(正方形冰块)、1115 Statistical Trouble(统计...
2. **PKU2452 Sticks Problem**:给定一系列长度不等的棍子,要求找出最长的一对棍子,使得它们之间存在一个中间棍子满足特定条件。这类问题可以通过构建辅助数据结构,如使用**平衡树**来实现快速查询和更新操作,...