石子试验报告

石子试验报告
石子试验报告

委托单位:某建筑公司试验编号:090847743

试验单位(章):负责人:××审核:××试验:××

委托单位:某建筑公司试验编号:091164329

试验单位(章):负责人:××审核:××试验:××

石子合并问题报告

石子合并(动态规划)详细解题报告2007-02-25 14:58

一.试题 在一个园形操场的四周摆放N堆石子(N≤100),现要将石子有次序地合并成一堆。规定 每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 编一程序,由文件读入堆数N及每堆的石子数(≤20), ①选择一种合并石子的方案,使得做N-1次合并,得分的总和最小; ②选择一种合并石子的方案,使得做N-1次合并,得分的总和最大。 例如,所示的4堆石子,每堆石子数(从最上面的一堆数起,顺时针数)依 次为4594。则3次合并得分总和最小的方案:8+13+22=43 得分最大的方案为:14+18+22=54 输入数据: 文件名由键盘输入,该文件内容为: 第一行为石子堆数N; 第二行为每堆的石子数,每两个数之间用一个空格符分隔。 输出数据: 输出文件名为output.txt 从第1至第N行为得分最小的合并方案。第N+1行是空行。从第N+2行到第2N+1行是得 分最大合并方案。 每种合并方案用N行表示,其中第i行(1≤i≤N)表示第i 次合并前各堆的石子数(依 顺时针次序输出,哪一堆先输出均可)。要求将待合并的两堆石子数以相应的负数表示,以便标识。 输入输出范例:

输入文件内容: 4 4594 输出文件内容: -459-4 -8-59 -13-9 22 4-5-94 4-14-4 -4-18 22 二.算法分析 竞赛中多数选手都不约而同地采用了尽可能逼近目标的贪心法来逐次合并:从最上面 的一堆开始,沿顺时针方向排成一个序列。第一次选得分最小(最大)的相邻两堆合并,形成新的一堆;接下来,在N-1堆中选得分最小(最大)的相邻两堆合并……,依次类推,直至所有石子经N-1次合并后形成一堆。 例如有6堆石子,每堆石子数(从最上面一堆数起,顺时针数)依次为346542

算法设计题目

第2章 1、大整数乘法的O(nm log(3/2))算法 给定2个大整数u和v,它们分别有m位和n位数字,且mn。用通常的乘法求uv的值需要O(mn)时间。可以u和v均看作是有n 位数字的大整数,用教材第2章介绍的分治法,在O(n l og3)时间内计算uv的值。当m比n小得多时,用这种方法就显得效率不够高。试设计一个算法,在上述情况下用O(nm l og(3/2))时间求出uv的值。 2、O(1)空间子数组换位算法 设a[0:n-1]是一个有n个元素的数组,k(1kn-1)是一个非负整数。试设计一个算法将子数组a[0:k-1]与a[k+1:n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅助空间。 3、段合并排序算法 如果在合并排序算法的分割步骤中,将数组a[0:n-1]划分为个子数组,每个子数组中有O()个元素。然后递归地对分割后的子数组进行排序,最后将所得到的个排好序的子数组合并成所要的排好序的数组a[0:n-1]。设计一个实现上述策略的合并排序算法,并分析算法的计算复杂性。 4、合并排序算法 对拨给元素存储于数组和存储于链表中的2种情形,写出合并排序算法。 5、非增序快速排序算法 如何修改QuickSort才能使其将输入元素按非增序排序?

第三章 1、整数线性规划问题 考虑下面的整数线性规划问题 试设计一个解此问题的动态规划算法,并分析算法的计算复杂性。2、Ackermann函数 Ackermann函数A(m,n)可递归地定义如下: A(m,n)= 试设计一个计算A(m,n)的动态规划算法,该算法只占用O(m)空间。 3、独立任务最优调试问题 问题描述:用2台机A和B处理n个作业。设第i个作业交给机器A 处理时需要时间a i,若由机器B来处理,则需要时间b i。由于各作业的选战和机器的性能关系,很可能对于某些i,有ai≥bi,而对于某些j,j≠i,有a i

石子试验实际操作规章制度

一.目的 检测石子各项指标,指导检测人员按规程正确操作,确保检测结果科学、准确。 二.检测参数及执行标准 颗粒级配、表观密度、堆积密度、紧密密度、空隙率、含泥量、泥块含量、压碎指标值、针片状颗粒含量等。 执行标准:GB50204-2002《混凝土结构工程施工质量验收规范》7.2.5条 GB/T14685-2001《建筑用卵石、碎石》。 JGJ52-2006《普通混凝土用砂、石质量及检验方法标准》 三.适用范围 适用于建筑工程中水泥混凝土及其制品用卵石和碎石。 四.职责 检测员必须执行国家标准,按照作业指导书操作,随时作好试验记录,填写检测报告,并对数据负责。 五.样本大小及抽样方法 在料堆上取样时,应均匀在料堆顶部,中部和底部的五个部位,铲除表面,然后由各部位抽取大致相等的石子15份,组成一组样品。大型运输工具的,以400m3或600t为一验收批,用小型工具运输时,以200m3或300t 为一验收批。不足上述数量以一批论。规格产地相同。取样数量不少于80kg。六.仪器设备 1. GY65鼓风烘箱(JC411):温度控制在(105±5)℃; 2. TGT-6台秤(JC072):称量10kg,感量1g;mm;

3. TGT-100台秤(JC401):称量50kg,感量50g; 4. 针状规准仪与片状规准仪(JC421); 5. 受压试模JC431 (测定压碎值); 6.WE-300B压力试验机(JC031):量程300 kN.,示值相对误差2 %; 7.方孔筛(JC371):孔径为75μm-90 mm的筛共14只,并附有筛底和筛盖; 8.垫棒:直径10 mm、长500 mm、直径16 mm、长600 mm,的圆钢; 9.容量筒;10L、20L 10. 广口瓶:1000 mL,磨口,带玻璃片; 11. 温度计、搪瓷盘、毛巾、毛刷、直尺,小铲等。 七.环境条件 常温下物理试验室内进行。 八.检测步骤及数据处理 1. 颗粒级配 准备好试验用的工具,检查仪器设各的状态是否正常按标准规定15个不同部位大致等量的组成一组,称取12.6kg数量的一份,精确到1g。将试样倒入按孔径大小从上到下组合的套筛,然后进行筛分。按筛孔大小顺序再逐个用手筛,筛至每分种通过量小于试样总量0.1%为止。通过颗粒并入下一号筛中,并和下一号筛中的试样一起过筛,这样顺序进行,直至各号筛全部筛完为止。称出各号筛的筛余量。 a.计算分计算余百分率:各号筛的筛余量与试样总质量之比,计算精确至1%。 b.计算累计筛余百分率:该号筛的筛余百分率加上该号筛以上各分计

DP问题不完全总结

DP问题不完全总结 1.按状态类型分写在前面: 从状态类型分,并不表示一题只从属于一类。其实一类只是一种状态的表示方法。可以好几种方法组合成一个状态,来解决问题。 1.1.编号(长度)动态规划共性总结 本类的状态是基础的基础,大部分的动态规划都要用到它,成为一个维。 一般来说,有两种编号的状态: 状态(i)表示前i个元素决策组成的一个状态。 状态(i)表示用到了第i个元素,和其他在1到i-1间的元素,决策组成有的一个状态。 题库 a)最长不下降子序列 以一元组(i)作为状态,表示第i个作为序列的最后一个点的时候的最长序列。于是很容易想到O(n2)得算法。但本题可合理组织状态,引入一个单调的辅助数组,利用单调性二分查找,优化到O(nlogn)。关于优化详见优化章。 一些问题可将数据有序化,转化成本题。 应用: 拦截导弹(NOIP99 Advance 1)就是原题。 Beautiful People(sgu199),要将数据有序化:其中一个权作为第一关键字不下降排列,另一个权作为第二关键字不上升。

Segment(ural 1078),将线段的左端点有序化就可以了。 b)LCS 状态(i,j),表示第1个字符串的第i位,与第2个字符串的第j位匹配,得到的最长的串。若有多个串要LCS,则加维,即几个串就几个维。我也将此题归入路径问题。 c)花店橱窗布置(IOI99) 见路径问题。 1.2.区间动态规划共性总结 本类问题与下一章的划分问题的决策的分割点无序交集比较大(占本类问题的30%)。 题库 a)石子合并 见划分问题 b)模版匹配(CEOI01,Patten) 这题特殊的地方是状态的值是一个集合而不是一个数。 c)不可分解的编码(ACM World Final 2002) d)Electric Path(ural1143) e)邮局(IOI2000 Day2 1) 若状态表示的思路从第i个村庄可以从属于哪个邮局,无最优子结构。转变一个方向:第k个邮局可以"控制"一个区间的村庄[i,j]。于是方程就显然了: f(k,i,j)=min{f(k-1,p,i-1)+w(i,j)}(k-1=p=i-1)

国家集训队2001论文集 毛子青

动态规划算法的优化技巧 福州第三中学毛子青 [关键词] 动态规划、时间复杂度、优化、状态 [摘要] 动态规划是信息学竞赛中一种常用的程序设计方法,本文着重讨论了运用动态规划思想解题时时间效率的优化。全文分为四个部分,首先讨论了动态规划时间效率优化的可行性和必要性,接着给出了动态规划时间复杂度的决定因素,然后分别阐述了对各个决定因素的优化方法,最后总结全文。 [正文] 一、引言 动态规划是一种重要的程序设计方法,在信息学竞赛中具有广泛的应用。 使用动态规划方法解题,对于不少问题具有空间耗费大、时间效率高的特点,因此人们在研究动态规划解题时更多的注意空间复杂度的优化,运用各种技巧将空间需求控制在软硬件可以承受的范围之内。但是,也有一部分问题在使用动态规划思想解题时,时间效率并不能满足要求,而且算法仍然存在优化的余地,这时,就需要考虑时间效率的优化。 本文讨论的是在确定使用动态规划思想解题的情况下,对原有的动态规划解法的优化,以求降低算法的时间复杂度,使其能够适用于更大的规模。 二、动态规划时间复杂度的分析 使用动态规划方法解题,对于不少问题之所以具有较高的时间效率,关键在于它减少了“冗余”。所谓“冗余”,就是指不必要的计算或重复计算部分,算法的冗余程度是决定算法效率的关键。动态规划在将问题规模不断缩小的同时,记录已经求解过的子问题的解,充分利用求解结果,避免了反复求解同一子问题的现象,从而减少了冗余。 但是,动态规划求解问题时,仍然存在冗余。它主要包括:求解无用的子问题,对结果无意义的引用等等。 下面给出动态规划时间复杂度的决定因素: 时间复杂度=状态总数*每个状态转移的状态数*每次状态转移的时间[1] 下文就将分别讨论对这三个因素的优化。这里需要指出的是:这三者之间不是相互独立的,而是相互联系,矛盾而统一的。有时,实现了某个因素的优化,另外两个因素也随之得到了优化;有时,实现某个因素的优化却要以增大另一因素为代价。因此,这就要求我们在优化时,坚持“全局观”,实现三者的平衡。 三、动态规划时间效率的优化 3.1 减少状态总数 我们知道,动态规划的求解过程实际上就是计算所有状态值的过程,因此状态的规模直接影响到算法的时间效率。所以,减少状态总数是动态规划优化的重要部分,本节将讨论减少状态总数的一些方法。

最新版建筑工程原材料(设备)合格证、试验报告汇总表

原材料(设备)合格证、试验报告汇总表 质量检查员:监理工程师:

填写说明 1.凡在工程中使用的主要建筑材料(包括钢材、水泥、砖、砂、石、混凝土外加剂、防水材料、电线、管材、阀门等),均应根据出厂合格证和复试报告的内容填写本表。 2.原材料汇总表必须及时按不同品种分类填写。复试报告与相对应的合格证必须一一对应,并应内容齐全。只有出厂合格证或只有复试报告的,只填写相应的内容;缺项的部分用“/”划去。 3.材料品种,指所用的材料如钢材、水泥等;规格指钢材品种和级别、水泥的品种等等。 4.使用部位(系统),建筑工程应注明楼层和检验批,安装工程应注明系统或部位。 5. 施工单位汇总后,监理工程师应对照出厂合格证和复试报告,对汇总表中的内容一一复核审查,对应有而缺少的内容应在审查结论中说明,对齐全的,在审查结论中填“出厂合格证及复试报告齐全,符合要求”。 6.原材料质保书,设备出厂合格证原则上要求是原件。质保书(合格证)的内容应齐全、准确、真实,抄件应注明原件存放单位,并有抄件人、抄件单位的签字与盖章,复印件要注明原件存放单位,并盖有原件存放单位的红章。质保书(合格证)上应由供货单位注明供货数量,并由监理(建设)单位根据施工(监理)日记在“原材料(设备)合格证试验报告汇总表”上确认在工程中使用的数量和部位(楼层、检验批或系统)。 材料进场必须按照规定进行进场检(试)验和复试。如同一施工单位在同一小区中多幢工程中使用同一批材料,数量很少不足一个复试批次时,可以不按幢检测,但检测报告必须注明幢号名称。 7.材料复试批次按以下确定:每个批次抽样复试不少于一次。 (1)钢材 在同一牌号、炉罐号、规格、交货状态下,热轧带肋钢筋、光圆钢筋、低碳钢热轧圆盘条、冷轧带肋钢筋每60t,冷轧钢筋10t抽一组。允许由同一牌号、冶炼、浇铸方法不同的炉罐号组成混合批,但每批不应多于6个炉罐号,各炉罐号含碳量之差不大于0.02%,含锰量之差不大于0.15%。不足一个验收批数量时,仍按一验收批计。其中冷轧带肋钢筋条成捆供应的550级钢筋的力学性能和工艺性能,以不大于10t为一批进行检验。(2)水泥 按同一生产厂家、等级、品种、批号且连续进场的水泥,袋装不超过200t为一批,散装不超过500t为一批。 (3)砂、石子 用大型工具(如火车、货车或汽车)运输至现场的,以400m3或600t为一验收批;用小型工具运输的,以200 m3或300t为一验收批。 (4)砌块 同一厂家在一致条件下生产的,烧结普通砖每15万块,烧结多孔砖及岩页模数多孔砖每5万块、烧结空心砖(砌块)每3.5~15万空心砌块块、粉煤灰砖每10万块、普通混凝土小型空心砖块每1万块分别为一批,不足一批数量的仍按一批计。用于多层以上建筑基础和底层的小型抽检数量不少于2组。 (5)钢材应在合格证编号栏还应填写批号,水泥在出厂日期栏还应填写出厂日期。

在一个圆形操场的四周摆放着n堆石子现要将石子有次序地

在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分,并分析算法的计算复杂性。 #include #include #define N 500 #define oo 2000000000 #define MIN(a, b) (a)<(b)?(a):(b) #define MAX(a, b) (a)>(b)?(a):(b) typedef struct { int c, d; } Node; int n; int v[N]; // 每堆石头的个数 int save[N]; // 输出最优解的具体合并需要随时改变v 的值,所以为了同时输出最小,最大的合并,在完成一个任务之后需要回溯Node f[N][N]; // f[i][j]存储最优解,同时存储合并线索 int sum[N][N]; // sum[i][j] 表示从第i 堆起,顺时针数j堆的石子总数 void Print(int i, int j) // 递归打印子序列f[i][j]的合并过程{ int k, x; if(j != 1) { Print(i, f[i][j].d); // 倒推子序列1 的合并过程 x = (i + f[i][j].d - 1)%n + 1; Print(x, j - f[i][j].d); // 倒推子序列2 的合并过程 for(k = 1; k <= n; k++) // 输出当前合并第i堆和第x堆的方案 if(v[k] > 0) { if(i == k || x == k) printf("-%d ", v[k]); // -号表示这次操作合并该堆 else printf("%d ", v[k]); } printf("\n"); v[i] = v[i] + v[x]; // 新堆的大小 v[x] = -v[x]; // 置为"-" 类似于删除 } } void Solve(int flag) // flag = 0求最小得分, flag = 1 求最大得分 { int i, j, k, x, t, result; for(i = 1; i <= n; i++) // 仅含一堆石子的序列不存在合并

石子合并问题

石子合并问题 在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。分析: 假设有n堆石子需要合并,可以设计一个2*n-1个元素的数组来存储每堆石子的个数。 分析最优解的结构:假设有石头AiAi+1……Aj需要合并,简记为A[i,j].如果设最后一次合并发生在Ak与Ak+1之间(i<=k

石子合并问题报告

石子合并(动态规划)详细解题报告 2007-02-25 14:58 一.试题 在一个园形操场的四周摆放N堆石子(N≤100),现要将石子有次序地合并成一堆。规定 每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 编一程序,由文件读入堆数N及每堆的石子数(≤20), ①选择一种合并石子的方案,使得做N-1次合并,得分的总和最小; ②选择一种合并石子的方案,使得做N-1次合并,得分的总和最大。 例如,所示的4堆石子,每堆石子数(从最上面的一堆数起,顺时针数)依 次为4594。则3次合并得分总和最小的方案:8+13+22=43 得分最大的方案为:14+18+22=54 输入数据: 文件名由键盘输入,该文件内容为: 第一行为石子堆数N; 第二行为每堆的石子数,每两个数之间用一个空格符分隔。 输出数据: 输出文件名为 从第1至第N行为得分最小的合并方案。第N+1行是空行。从第N+2行到第2N+1行是得 分最大合并方案。 每种合并方案用N行表示,其中第i行(1≤i≤N)表示第i 次合并前各堆的石子数(依 顺时针次序输出,哪一堆先输出均可)。要求将待合并的两堆石子数以相应的负数表示,以便标识。

输入输出范例: 输入文件内容: 4 4594 输出文件内容: -459-4 -8-59 -13-9 22 4-5-94 4-14-4 -4-18 22 二.算法分析 竞赛中多数选手都不约而同地采用了尽可能逼近目标的贪心法来逐次合并:从最上面 的一堆开始,沿顺时针方向排成一个序列。第一次选得分最小(最大)的相邻两堆合并,形成新的一堆;接下来,在N-1堆中选得分最小(最大)的相邻两堆合并……,依次类推,直至所有石子经N-1次合并后形成一堆。

《算法分析与设计》_实验指导书

编著说明 本书是为配合《算法分析与设计实验教学大纲》而编写的上机指导,其目的是使学生消化理论知识,加深对讲授内容的理解,尤其是一些算法的实现及其应用,培养学生独立编程和调试程序的能力,使学生对算法的分析与设计有更深刻的认识。 上机实验一般应包括以下几个步骤: (1)、准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机。(2)、上机输入和调试自己所编的程序。一人一组,独立上机调试,上机时出现的问题,最好独立解决。 (3)、上机结束后,整理出实验报告。实验报告应包括:题目、程序清单、运行结果、对运行情况所作的分析。 本书共分8~10个实验,其具体要求和步骤如下:

目录 实验一、C/C++环境及递归算法...................................... 错误!未定义书签。实验二、递归与分治策略.. (5) 实验三、动态规划算法(一) (9) 实验四、动态规划算法(二) (12) 实验五、贪心算法(一) (15) 实验六、贪心算法(二) (17) 实验七、回溯法(一) (20) 实验八、回溯算法(二) (22) 实验九、分支限界法 (24) 实验十:随机化算法(选学) (29)

实验二、递归与分治策略 一、实验目的与要求 1、进一步熟悉C/C++语言的集成开发环境; 2、通过本实验加深对递归与分治策略的理解和运用; 二、实验内容: 1、分析并掌握“棋盘覆盖问题”的递归与分治算法示例; 2、分析并掌握“二分搜索问题”的递归与分治算法示例; 3、练习使用递归与分治策略求解众数问题或集合划分问题; 三、实验题 众数问题:给定含有N个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为多重集合S的众数,众数的重数称为多重集合S的重数,试求一个给定多重结合的重数和众数; 例如:S={a,b,b,b,f,f,4,5}的重数是3,众数是b 集合划分问题:N个元素的集合{1,2,…,N}可以划分为若干个非空集合的子集,例如,当N=4时,集合{1,2,3,4}可划分为15个不同的非空子集如下:{{1},{2},{3},{4}};{{1,2},{3},{4}};{{1,3},{2},{4}}; {{1,4},{2},{3}};{{2,3 },{1},{4}};{{2,4},{1},{3 }}; {{3,4 },{1},{2}};{{1,2 },{3,4}};{{1,3 },{2,4}}; {{1,4 },{3,2 }};{{2,3,4},{1}};{{1,3,4},{2}}; {{1,2,4},{3}};{{1,2,3},{4}};{{1,2,3,4}}; 给定正整数N,计算出N个元素的集合{1,2,…,N}可以划分多少个非空集合的子集; 四、实验步骤 1.理解递归和分治策略的基本思想和算法示例; 2.上机输入和调试算法示例程序; 3.理解实验题的问题要求;

石子合并问题(矩阵连乘求解)

石子合并问题 (2011-11-14 21:06:38) 描述:在一条直线上摆着N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动相邻的2堆石子合并,合并花费为将的一堆石子的数量。设计一个算法,将这N堆石子合并成一堆的总花费最小 解析: 采用动态递归,运用矩阵连乘思想即可解答此类题目 源程序: #include #include #include #include using namespace std; #define MAXN 100 int sum[MAXN][MAXN]; int m[MAXN][MAXN]; int t[MAXN][MAXN]; int n, stone[MAXN]; int MatrixChain_min( ) { int min=0; for(int g =01;g

} } min=m[0][n-1]; return min; } int main() { int i,j,q; scanf("%d", &n); for(i = 0; i < n; i++) scanf("%d", &stone[i]); for(i=0;i

算法竞赛专题解析-四边形不等式优化

算法竞赛专题解析│四边形不等式优化 01理论背景 四边形不等式(quadrangleinequality)应用于DP优化,是一个古老的知识点。它起源于Knuth(高纳德)1971年的一篇论文,用来解决最优二叉搜索树问题。1980年,储枫(F.FrancesYao,姚期智的夫人)做了深入研究,扩展为一般性的DP优化方法,把一些复杂度O(n3)的DP问题,优化为O(n2)。所以这个方法又被称为“Knuth-YaoDPSpeedupTheorem”。 02应用场合 有一些常见的DP问题,通常是区间DP问题,它的状态转移方程是: dp[i][j]=min(dp[i][k]+dp[k+1][j]+w[i][j])其中i<=k

经典的动态规划入门练习题

动态规划入门练习题 1.石子合并 在一个圆形操场的四周摆放着N堆石子(N<= 100),现要将石子有次序地合并成一堆.规定每次只能选取相邻的两堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.编一程序,由文件读入堆栈数N及每堆栈的石子数(<=20). (1)选择一种合并石子的方案,使用权得做N-1次合并,得分的总和最小; (2)选择一种合并石子的方案,使用权得做N-1次合并,得分的总和最大; 输入数据: 第一行为石子堆数N; 第二行为每堆的石子数,每两个数之间用一个空格分隔. 输出数据: 从第一至第N行为得分最小的合并方案.第N+1行是空行.从第N+2行到第2N+1行是得分最大合并方案.每种合并方案用N行表示,其中第i行(1<=i<=N)表示第i次合并前各堆的石子数(依顺时针次序输出,哪一堆先输出均可).要求将待合并的两堆石子数以相应的负数表示. 输入输出范例: 输入: 4 4 5 9 4 输出: -459-4 -8-59 -13-9 224-5-94 4-14-4 -4-18 22 最小代价子母树设有一排数,共n个,例如:22 14 7 13 26 15 11.任意2个相邻的数可以进行归并,归并的代价为该两个数的和,经过不断的归并,最后归为一堆,而全部归并代价的和称为总代价,给出一种归并算法,使总代价为最小. 输入、输出数据格式与“石子合并”相同。 输入样例: 4 12 5 16 4 输出样例: -12-5164 17-16-4 -17-20 37

2.背包问题 设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为XK,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于XK,而价值的和为最大。 输入数据: 第一行两个数:物品总数N,背包载重量XK;两个数用空格分隔; 第二行N个数,为N种物品重量;两个数用空格分隔; 第三行N个数,为N种物品价值; 两个数用空格分隔; 输出数据: 第一行总价值; 以下N行,每行两个数,分别为选取物品的编号及数量; 输入样例: 4 10 2 3 4 7 1 3 5 9 输出样例: 12 2 1 4 1 3.商店购物 某商店中每种商品都有一个价格。例如,一朵花的价格是2 ICU(ICU 是信息学竞赛的货币的单位);一个花瓶的价格是5 ICU。为了吸引更多的顾客,商店提供了特殊优惠价。特殊优惠商品是把一种或几种商品分成一组。并降价销售。例如:3朵花的价格不是6而是5 ICU ;2个花瓶加1朵花是10 ICU不是12 ICU。 编一个程序,计算某个顾客所购商品应付的费用。要充分利用优惠价以使顾客付款最小。请注意,你不能变更顾客所购商品的种类及数量,即使增加某些商品会使付款总数减小也不允许你作出任何变更。假定各种商品价格用优惠价如上所述,并且某顾客购买物品为:3朵花和2个花瓶。那么顾客应付款为14 ICU 因为: 1朵花加2个花瓶: 优惠价:10 ICU 2朵花正常价: 4 ICU 输入数据 用两个文件表示输入数据。第一个文件INPUT.TXT描述顾客所购物品(放在购物筐中);第二个文件描述商店提供的优惠商品及价格(文件名为OFF ER.TXT)。两个文件中都只用整数。 第一个文件INPUT.TXT的格式为:第一行是一个数字B(0≤B≤5),表示所购商品种类数。下面共B行,每行中含3个数C,K,P。 C 代表商品的编码(每种商品有一个唯一的编码),1≤C≤999。K代表该种商品购买总数,1≤K≤5。P 是该种商品的正常单价(每件商品的价格),1≤P≤999。请注意,购物筐中最多可放5*5=25件商品。 第二个文件OFFER.TXT的格式为:第一行是一个数字S(0≤S≤9 9),表示共有S 种优惠。下面共S行,每一行描述一种优惠商品的组合中商品的种类。下面接着是几个数字对(C,K),其中C代表商品编码,1≤C≤9 99。K代表该种商品在此组合中的数量,1≤K≤5。本行最后一个数字P(1≤ P≤9999)代表此商品组合的优惠价。当然,优惠价要低于该组合中商品正常价之总和。 输出数据 在输出文件OUTPUT.TXT中写一个数字(占一行),该数字表示顾客所购商品(输入文件指明所购商品)

砖、砂、石质量保证书及试验报告汇总表

砖、砂、门窗、防水材料及其他材料质量保证书及试验报告汇总表 工程名称:年产100万件门窗五金件生产线工程质监登记号:AZJ2011-0068-01 序号名 称 质量保证书试验报告 最早使 用时间品种、规格生产厂家数量 质保书 内容 试验编号试验时间 试验 结果 是否 见证 取样 1 砖240*115*53 宁波市鄞州古木立 新墙体建材5万块齐全ZY201100109 2011.7.19 合格是 2 240*115*90 宁波恒新建材有限 公司 5万块齐全ZY201100146 2011.8.23 合格是 3 240*115*90 宁波恒新建材有限 公司5万块齐全ZY201100179 2011.9.29 合格是 4 240*115*90 宁波恒新建材有限 公司5万块齐全ZY201100178 2011.9.29 合格是 5 砂淡化海砂 宁波市镇海福耀海 沙淡化有限公司 500吨齐全XG201100384 2011.7.19 合格是 6 淡化海砂宁波鄞州姜山兴义 沙厂 500吨齐全XG201100511 2011.9.30 合格是 7 天然砂宁波高新广基有限 公司 300吨齐全合格是 8 9 防 水 材 料 SBS弹性体改 性沥青防水卷 材 奉化市祥新防水材 料厂 齐全FS201100027 2011.10.13 合格是 10 11 门 窗 铝合金门窗型 材 宁波蓝光实业股份 有限公司 齐全MC201100060 2011.10.21 合格是 12 13 14 15 16 17 18 经统计,其中砖质保书共 4 份,试验报告共 3 份;砂质保书共3 份,试验报告共 3 份;防水材料质保书一份,试验报告 1 份,门窗材料质保书1 份,金属材料质保书 1 份对其中不符合要求的经及时组织处理,具体处理如下:/ 施工单位意见:项目经理:(章)监理单位意见: 项目总监:(章) 建设单位意见: 项目负责人:(章)

石子合并

动态规划案例 【石子合并】 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 【输入文件】 包含两行,第1 行是正整数n(1<=n<=100),表示有n堆石子。 第2行有n个数,分别表示每堆石子的个数。 【输出文件】 输出两行。 第1 行中的数是最小得分;第2 行中的数是最大得分。 【输入样例】【输出样例】 4 43 4 4 5 9 54 【分析】 本题初看以为可以使用贪心法解决问题,但是事实上因为有必须相邻两堆才能合并这个条件在,用贪心法就无法保证每次都能取到所有堆中石子数最多的两堆。例如下面这个例子: 6 3 4 6 5 4 2 如果使用贪心法求最小得分,应该是如下的合并步骤: 第一次合并3 4 6 5 4 2 2,3合并得分是5 第二次合并5 4 6 5 4 5,4合并得分是9 第三次合并9 6 5 4 5,4合并得分是9 第四次合并9 6 9 9,6合并得分是15 第五次合并15 9 15,9合并得分是24 总得分=5+9+9+15+24=62 但是如果采用如下合并方法,却可以得到比上面得分更少的方法: 第一次合并3 4 6 5 4 2 3,4合并得分是7 第二次合并7 6 5 4 2 7,6合并得分是13 第三次合并13 5 4 2 4,2合并得分是6 第四次合并13 5 6 5,6合并得分是11 第五次合并13 11 13,11合并得分是24 总得分=7+13+6+11+24=61 由此我们知道本题是不可以使用贪心法求解的,上例中第五次合并石子数分别为13和11的相邻两堆。这两堆石头分别由最初的第1,2,3堆(石头数分别为3,4,6)和第4,5,6堆(石头数分别为5,4,2)经4次合并后形成的。于是问题又归结为如何使得这两个子序列的N-2次合并的得分总和最优。为了实现这一目标,我们将第1个序列又一分为二:第1、2堆构成子序列1,第3堆为子序列2。第一次合并子序列1中的两堆,得分7;第二次再将之与子序列2的一堆合并,得分13。显然对于第1个子序列来说,这样的合并方案是最优的。同样,我们将第2个子序列也一分为二;第4堆为子序列1,第5,6堆构成子序列2。第三次合并子序列2中的2堆,得分6;第四次再将之与子序列1中的一堆合并,得分13。显然对于第二个子序列来说,这样的合并方案也是最优的。由此得出一个结论──6堆石子经过这样的5次合并后,得分的总和最小。 动态规划思路: 阶段i:石子的每一次合并过程,先两两合并,再三三合并,...最后N堆合并 状态s:每一阶段中各个不同合并方法的石子合并总得分。 决策:把当前阶段的合并方法细分成前一阶段已计算出的方法,选择其中的最优方案 具体来说我们应该定义一个数组s[i,j]用来表示合并方法,i表示从编号为i的石头开始合并,j表示从i开始数j堆进行合并,s[i,j]为合并的最优得分。 对于上面的例子来说,初始阶段就是s[1,1],s[2,1],s[3,1],s[4,1],s[5,1],s[6,1],因为一开始还没有合并,所以这些值应该全部为0。

(整理)ACM大量习题题库及建议培养计划.

//别人总结的,确实很多,但有信心就能学完! 一.基本算法: (1)枚举.(poj1753,poj2965) (2)贪心.(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法.(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法.(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序.(poj1094) (5)二分图的最大匹配(匈牙利算法).(poj3041,poj3020) (6)最大流的增广路算法(KM算法).(poj1459,poj3436) 三.数据结构. (1)串.(poj1035,poj3080,poj1936) (2)排序(快排、归并排(与逆序数有关)、堆排).(poj2388,poj2299) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法.(数的Hash,串的Hash) (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) (5)哈夫曼树.(poj3253) (6)堆. (7)trie树(静态建树、动态建树).(poj2513) 四.简单搜索 (1)深度优先搜索.(poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索.(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝.(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书page149): 1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学: 1.加法原理和乘法原理. 2.排列组合. 3.递推关系. (POJ3252,poj1850,poj1019,poj1942) (2)数论.

POJ_题目整理

初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序 (poj1094) (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) 三.数据结构. (1)串 (poj1035,poj3080,poj1936) (2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299) (3)简单并查集的应用. (4)哈希表和二分查找等高效查找法(数的Hash,串的Hash) (poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503) (5)哈夫曼树(poj3253)

(6)堆 (7)trie树(静态建树、动态建树) (poj2513) 四.简单搜索 (1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251) (2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414) (3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129) 五.动态规划 (1)背包问题. (poj1837,poj1276) (2)型如下表的简单DP(可参考lrj的书 page149): 1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533) 2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列) (poj3176,poj1080,poj1159) 3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题) 六.数学 (1)组合数学: 1.加法原理和乘法原理. 2.排列组合. 3.递推关系. (POJ3252,poj1850,poj1019,poj1942) (2)数论. 1.素数与整除问题 2.进制位. 3.同余模运算. (poj2635, poj3292,poj1845,poj2115)