集装箱

最优装载问题_贪心

久未见 提交于 2019-12-04 03:43:59
一、 问题描述 有一批集装箱要装上一艘载重为C的轮船。其中集装箱i的重量为Wi。最优装载问题要去确定在装载体积不受限制的情况下,将极可能多的集装箱装上轮船。 二、 解题思路及所选算法策略的可行性分析 使用贪心算法。 问题描述为 : max∑Xi,∑WiXi<=C,Xi∈{0,1} 1<=i<=n 其中,变量Xi=0表示不装入集装箱i,Xi=1表示装入集装箱i。 贪心选择性质 : 设集装箱已依其重量从小到大排序,(X1,X2,…,Xn)是最优装问题的一个最优解。又设k=min{i|Xi=1}。易知,如果给定的最优装载问题有解,则1<i<=n,i!=k,则 ∑WiYi = Wi - Wk + ∑WiXi <= ∑WiXi <= C 因此,(Yz,Y2,…,Yn)是所给最优装载问题的可行解。 另一方面,由∑Yi = ∑Xi知,(Y1,Y2,…,Yn)是满足贪心选择性质的最优解。 最优子结构性质 : 设(X1,X2,…,Xn)是最优装载问题的满足贪心选择性质的最优解,则容易知道,X1=1,且(X2,…,Xn)是轮船载重量为C-W1,待装载集装箱为{2,3,…,n}时相应最优集装箱问题的最优解。也及时说,最优集装箱装载问题具有最优子结构性质。 三、 代码描述及复杂度分析 Loading(float c, float[]w, int[] x) { 创建集装箱数组,存放每个集装箱重量及其序号;

P1165 日志分析

依然范特西╮ 提交于 2019-12-04 00:11:26
如有乱码,请 点击 。 题目描述 M M 海运公司最近要对旗下仓库的货物进出情况进行统计。目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志。该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次入库的集装箱重量;第二类操作为集装箱的出库操作。这些记录都严格按时间顺序排列。集装箱入库和出库的规则为先进后出,即每次出库操作出库的集装箱为当前在仓库里所有集装箱中最晚入库的集装箱。 出于分析目的,分析人员在日志中随机插入了若干第三类操作――查询操作。分析日志时,每遇到一次查询操作,都要报告出当前仓库中最大集装箱的重量。 输入格式 包含 N+1 N + 1 行: 第一行为 1 1 个正整数 N N,对应于日志内所含操作的总数。 接下来的 N N行,分别属于以下三种格式之一: 格式 1 1: 0 X 0 X //一次集装箱入库操作,正整数 X X表示该次入库的集装箱的重量 格式 2 2: 1 1 //一次集装箱出库操作,(就当时而言)最后入库的集装箱出库 格式 3 3: 2 2 //一次查询操作,要求分析程序输出当前仓库内最大集装箱的重量 当仓库为空时你应该忽略出库操作,当仓库为空查询时你应该输出 0 0。 输出格式 输出行数等于日志中查询操作的次数。每行为一个正整数,表示查询结果。 输入输出样例 输入 #1 复制 13 0 1 0 2 2 0 4 0 2 2 1 2 1 1 2

装载问题(回溯法)

匿名 (未验证) 提交于 2019-12-03 00:18:01
1.具体问题 : 一批集装箱共n个要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量为Wi且W1+W2+……+Wn<=c1+c2;试确定一个合理的装载方案使这n个集装箱装上这两艘轮船。 2.问题分析: 容易去证明:如果一个装载问题有解,则采用下面的策略可以得到最优装载方案: (1)首先将第一艘轮船尽可能装满; (2)然后将剩余的集装箱装在第二艘轮船上。 那么在这个过程中,我们需要找到尽可能把第一个轮船装满的解。如果用回溯法解决问题,我们可以首先分析问题得解空间结构,应该是一个子集树。然后我们可以把问题套入相应的模版进行解决。下面是代码示例: 3.代码示例 #include<stdio.h> #define M 100 int n=3;//装载问题的深度 int x[]={0,0,0};//用来标记是否放入第一艘轮船 int c1=50;//第一艘轮船剩余容量 int w[]={10,40,40};//货物重量 int x1[]={0,0,0};//标记最优解 int Constrain(int t){ int i; int sum=0; static int sum1=0; //最优解 for(i=0;i<=t;i++){ if(x[i]==1) sum+=w[i]; } printf("--------------->%d\n",sum); for(i=0;i<n;i++

PoW工作量证明

偶尔善良 提交于 2019-11-30 03:11:14
链客,专为开发者而生,有问必答! 此文章来自 区块链技术社区 ,未经允许拒绝转载。 PoW是Proof of Work的缩写,即工作量证明的意思。在《拜占庭将军问题》中介绍过,比特币系统中引入了“工作量”的概念,有意降低了信息传递的效率,让矿工必须完成一定的工作量,才能够在全网广播消息。 (孩子第一次为我的文章配图,厉害吧) 以工地的搬砖任务为例,一群工人们(矿工)向火车的车皮(区块)里搬砖,每个工人身边都有一个集装箱,这个集装箱与火车车皮一样大,正好能够装满1000块砖。 工人们只能往集装箱里搬砖,谁先装满集装箱,就把这个集装箱放到车皮里,领取12.5元的工钱(实际上并不是马上拿走,100节车皮之后才能真正取走)。只有第一个搬完的工人能够获得奖励,在这个集装箱放入车皮的同时,其他工人的集装箱里也装了一些砖头了,全部作废,重新搬砖,继续投入到下一节车皮的竞争中。 比特币世界里的矿工(工人)也是这样辛苦,这里的矿工是一堆安装了专门芯片的电脑,它们的工作就是进行HASH计算(准确讲是SHA256,高级搬砖工作),谁先算完,写入一个新区块(车皮),得到奖励的12.5个BTC(发行新币),其它矿工则白忙活,继续进行下一轮的竞争。 因为电脑的计算速度太快,所以要安排上亿次的HASH计算,保证有矿工在10分钟左右能够完成任务。这种工作量,既是一种发行货币的过程,也是一种验证其他人交易的过程

百度EasyDL分享

ε祈祈猫儿з 提交于 2019-11-29 19:16:06
6300多公里的长江黄金水道,在浙江杭州湾与钱塘江交汇,浩浩汤汤的水道与黄金海岸线交于一点形成一条10.7公里深水岸线,水域宽广——宁波大榭招商国际码头就坐落在这里。码头上,一艘艘庞大的外轮停靠在岸,桥吊配合着集卡有条不紊地装卸集装箱。没有黑烟、巨大噪声,也没有人头攒动一波接一波的装卸人员,忙而井然有序的码头背后,是码头多年智能化的自研与探索。 图:宁波大榭招商国际码头 "应该是2015年,我们就开始向智能化转型了。" 宁波大榭招商国际码头的信息技术系统管理员陈文杰介绍说,"主要转型应用场景集中在岸边、闸口、堆场三块,并有专门的部门和负责人来统筹。"不难看出,当仍有部分人将"AI(人工智能)"视为远在天际的"星辰大海"时,却也有着更多的人思考着如何将"AI"加注于传统产业,跑出"智能化"升级的又一个中国速度。 传统码头的智能化升级从未如此快速落地过。 在码头集装箱领域,集装箱箱门朝向识别非常重要,这直接影响码头的运输效率和调转搬运成本。如果出闸集装箱箱体方向错误,需要使用大型专用机械进行调转,搬移一次的成本高达几十元。对于每天有成千上万个箱体运输的码头来说,这是一笔不小的潜在成本,因此需要对集装箱箱门朝向进行高效核对。 传统码头主要依靠人工对集装箱信息进行核对和录入,审核效率较低。宁波大榭招商国际码头一天出闸量在3000个左右,人工核对工作量大,由此迫切需要一种智能核对方案

【数据结构】P1165 日志分析

我只是一个虾纸丫 提交于 2019-11-28 14:42:41
题目描述 M M 海运公司最近要对旗下仓库的货物进出情况进行统计。目前他们所拥有的唯一记录就是一个记录集装箱进出情况的日志。该日志记录了两类操作:第一类操作为集装箱入库操作,以及该次入库的集装箱重量;第二类操作为集装箱的出库操作。这些记录都严格按时间顺序排列。集装箱入库和出库的规则为先进后出,即每次出库操作出库的集装箱为当前在仓库里所有集装箱中最晚入库的集装箱。 出于分析目的,分析人员在日志中随机插入了若干第三类操作――查询操作。分析日志时,每遇到一次查询操作,都要报告出当前仓库中最大集装箱的重量。 输入格式 包含 N + 1 行: 第一行为 1 个正整数 N N,对应于日志内所含操作的总数。 接下来的 N行,分别属于以下三种格式之一: 格式 1: 0 X //一次集装箱入库操作,正整数 X表示该次入库的集装箱的重量 格式 2: 1 //一次集装箱出库操作,(就当时而言)最后入库的集装箱出库 格式 3: 2 //一次查询操作,要求分析程序输出当前仓库内最大集装箱的重量 当仓库为空时你应该忽略出库操作,当仓库为空查询时你应该输出 0 。 输出格式 输出行数等于日志中查询操作的次数。每行为一个正整数,表示查询结果。 输入输出样例 输入 #1 13 0 1 0 2 2 0 4 0 2 2 1 2 1 1 2 1 2 输出 # 2 4 4 1 0 【题解】:   利用两个栈实现这一过程。