DP问题不完全总结
现场总线调试故障总结
一、故障现象分析处理1、只要送电就偶尔报通讯故障,各子站随机出现通讯故障。
粗略检测回路电阻,阻值为112Ω左右,阻值在正常范围内。
对故障1,首先检查接线顺序问题,通讯DP头A、B端子的电缆是否有接反现象,其次看接线是否有不良现象,然后测量总线上的回路电阻值,理论上电阻值在110Ω左右就没有问题;偶尔报通讯故障一般就是信号衰减的问题,主要有接线和通讯头两方面原因。
2、各子站随机出现通讯故障。
粗略检测回路电阻,阻值为85Ω,阻值不在正常范围内。
对故障2,检查两端的DP通讯头,发现末尾的DP通讯头阻值异常,应该是220Ω,却只有140Ω左右,更换正常DP通讯头后,恢复正常。
3、运行时偶尔22~25子站报通讯故障,不运行时没有问题。
粗略测量阻值为112Ω,阻值在正常范围内。
对故障3,接线和通讯头均正常,测量阻值为112Ω,阻值在正常范围内,电缆也没有新增。
但是运行时报故障,判断是设备运行导致故障的发生,应是电磁干扰、变频电机在运行时影响通讯所致。
在电缆隧道中,通讯电缆与电机的动力电缆是在一起的。
为证实这一判断把这4个子站所带的电机全部停下,然后试车,发现不再报通讯故障。
因此,故障原因就是电磁干扰。
这种情况需重新敷设,避免通讯电缆和动力电缆同隧道。
二、问题分析1、单个从站故障现场总线控制系统中的从站基本都是安装在现场的设备,而现场环境比较恶劣,灰尘、雨水、振动等会影响现场设备的使用寿命。
当某个从站故障时,它会通过总线向主站发出大量的故障信息,如果总线中某处数据传输存在瓶颈,就有可能造成网络堵塞,导致所有从站与主站失去通信。
在闭冷水系统中,水的压力高、流速快,管道会有较大的振动,造成个别电动门频繁故障,故障电动门通过总线向DCS卡件发送大量报警信息。
而这个系统中光电转换器就是一个瓶颈,报警信息足够多时会使光电转换器出现数据堵塞而中断网络。
网络一旦中断,所有现场总线电动门就无法在DCS中操控。
只有处理好故障电动门,同时清空光电转换器数据,才能使网络恢复正常。
dp通讯故障快速处理方法
dp通讯故障快速处理方法
1.初步检查:首先检查网络线路是否接触良好,是否有过长的线路导致信号衰减。
同时,查看网络负载是否过大,因为过大的负载也可能导致通讯不稳定。
2.硬件检查:检查所有硬件的基本接线及通信原理,确保PLC、触摸屏、ET200等主要硬件设备工作正常。
特别注意检查M12通信及电源接头是否接触良好。
3.使用DP网络寻找故障点:采用逐一加站原则,先甩开所有从站,从DP网路离CPU最近的第一个DP站开始诊断。
如果全线只有某一个站报警,直接判断该站为通讯故障位置。
如果全线只有末站或末段报警,在故障段继续采用逐一加站原则进行诊断。
如果全线报警,则直接采用逐一加站原则进行诊断。
4.软件诊断:使用相关的诊断软件(如ProfiTrace)对网络进行诊断,查看网络拓扑结构,以便更好地定位故障点。
5.增加抗干扰设备:对于干扰严重的区域,可以尝试增加抗干扰设备,以提高通讯的稳定性。
6.替换法:如果通过以上方法仍无法确定故障点,可以尝试使用替换法,逐一替换可能存在问题的硬件设备,以便快速找到故障点。
第四章、对偶(DP)问题
解 设对应于三个约束条件的对偶变量分别 为: y1 , y2 , y3 ,则由对偶问题的定义, 可以直接写出其对偶问题是:
max 5 y1 4 y 2 6 y 3 y1 2 y 2 2 y1 y 3 3 y1 2 y 2 y 3 5 y1 y 3 1 y1 0 , y 2 0 , y 3 无约束
从另一角度来看,在单纯形法的每一步迭代中,目标函数取 值 Z CB B b , 和 检 验 数 C N CB B N 中 都 有 乘 子
1
1
Y CB B 1
max z CX , 如 果 B 是 AX b 的 最 优 基 , 则 X 0
Z CB B 1b Y b ,从而,
产品 资源
A
B
资源限制
甲 乙 丙 利润
1 5 2 6
1 2 6 8
90 490 240
问题是:如何安排生产使得在现有条件下获 得利润最多? 解 设生产A、B产品数为 x1 , x2 则有数学模型为:
max s 6 x1 8 x2 x x 90 1 2 5 x1 2 x2 490 2 x 6 x 240 2 1 x1 , x2 0
例题
四、对偶问题的经济意义 ——影子价格
1影子价格的定义 2影子价格的计算 3影子价格的经济意义
1影子价格的定义
在问题的提出中,我们得到原问题的最优解是 (75,15),最优值是570。 并可求得在此最优方案下的资源耗用: 原料甲耗用:1*75+1*15=90 原料乙耗用:5*75+2*15=405 原料丙耗用:2*75+6*15=240
六、例题及解答
Dp状态设计与方程总结
Dp状态设计与方程总结1. 不完全状态记录 (2)<1>青蛙过河问题: (2)<2>利用区间dp (3)2.背包类问题 (4)<1> 0-1背包,经典问题 (4)<2>无限背包,经典问题 (4)<3>判定性背包问题 (4)<4>带附属关系的背包问题 (5)<5> + -1背包问题 (5)<6>双背包求最优值 (7)<7>构造三角形问题 (9)<8>带上下界限制的背包问题 (10)3.线性的动态规划问题 (13)<1>积木游戏问题 (13)<2>决斗(判定性问题) (13)<3>圆的最大多边形问题 (14)<4>统计单词个数问题 (14)<5>棋盘分割 (14)<6>日程安排问题 (15)<7>最小逼近问题(求出两数之比最接近某数/两数之和等于某数等等) (15)<8>方块消除游戏(某区间可以连续消去求最大效益) (15)<9>资源分配问题 (15)<10>数字三角形问题 (16)<11>漂亮的打印 (16)<12>邮局问题与构造答案 (17)<12>最高积木问题 (19)<13>两段连续和最大 (19)<14>2次幂和问题 (20)<15>N个数的最大M段子段和 (20)<16>交叉最大数问题 (20)4.判定性问题的dp(如判定整除、判定可达性等) (22)<1>模K问题的dp (22)<2>特殊的模K问题,求最大(最小)模K的数 (22)<3>变换数问题 (24)5.单调性优化的动态规划 (25)<1>1-SUM问题 (25)<2>2-SUM问题 (26)<3>序列划分问题(单调队列优化) (27)6.剖分问题(多边形剖分/石子合并/圆的剖分/乘积最大) (28)<1>凸多边形的三角剖分问题 (28)<2>乘积最大问题 (28)<3>多边形游戏(多边形边上是操作符,顶点有权值) (29)<4>石子合并(N^3/N^2/NLogN各种优化) (29)7.贪心的动态规划 (31)8.状态dp (33)<1>牛仔射击问题(博弈类) (33)<2>哈密顿路径的状态dp (35)<3>两支点天平平衡问题 (35)<4>一个有向图的最接近二部图 (36)9.树型dp (38)<1>完美服务器问题(每个节点有3种状态) (38)<2>小胖守皇宫问题 (40)<4>树中漫游问题 (41)<5>树上的博弈 (42)<6>树的最大独立集问题 (42)<7>树的最大平衡值问题 (42)<8>树的限制节点数坎边问题 (43)1.不完全状态记录<1>青蛙过河问题:由于河的长度十分长,达到10^9,所以不可能用dp[i]表示在坐标i时踩到的最少石头数,需要换种状态记录方式来压缩。
DP通讯故障分析处理方法
DP通讯故障分析处理方法一、DP总线网络维护现状:Profibus-DP总线网络技术起源于于欧洲,现在普遍应用于欧洲控制系统或现场智能仪表通讯接口。
技术成熟、应用广泛。
在我部门所维护的控制系统中,主要出现在控制系统控制层用于连接各I/O站或卡件。
所有和利时和ABB厂商的控制系统均采用Profibus-DP总线构成现场控制层的通讯网络,其运行和维护非常重要,直接关系生产运行的正常进行。
多年以来Profibus-DP总线网络总体稳定,但随着运行时间的增加和现有基础上的技术改造,通讯故障时有发生,并严重影响生产。
因此对Profibus-DP总线的维护和故障处理显得越加突出。
那么怎样来解决普遍存在的一些问题呢?本文就各个自控系统普遍使用的Profibus现场总线,结合现场实例,说明故障诊断的问题。
从图1中我们可以看到,采用现场总线Profibus的控制系统可以分为三层:现场控制层、监控层和企业管理层。
其中现场控制层是我们这里最为关注的可能存在相应通讯问题的地方,我们的故障检测和排除工作,也多在这个层面进行。
现场控制层涉主要由现场智能从站、智能仪表、远程I/O网络设备组成。
对于现场控制层的检测,现场的维护工程师的工作内容一般都是从故障的现象人手,凭借自身的经验判断结论。
这样的过程,体现出来的优势就是在经验丰富的工程师进行排故时,有时可以很快地解决问题,排除故障。
但是从另一个方面来说,如此排故的不确定性也很大。
排故的效果更依赖于人的因素,而且在进行排故之后,无法准确判断是否彻底解决了总线中原本存在的问题,是否产生了新的故障隐患。
对于我们实际面对的Profibus现场来说,更加便捷的检测方式和更加直观的检测依据无疑更加适合对于现场故障的快速判断和解决。
通过对与通讯的波形质量、结点的实时电压的测量,我们可以通过一个点的接入,了解到整个网络上没一个结点的实时状况。
如图2 所示。
通过以上的手段,我们能够在现场实际连接了检测工具之后,快速地检测出同一网段上每个结点的实时状态。
dp总结--by fj
动态规划总结----By fj 动态规划,一种神奇的算法。
搞了这么久的dp,我们从初识它,到理解它,到运用它,她那神秘的面纱逐渐被揭下。
对它的理解:一种特殊的递推,一种剪枝的搜索。
它分多阶段,状态转移只受前一状态影响。
这期间,考了许多次考试,虽然考得不是很理想,但收获还是多多的。
以下是部分题目的解法及心得体会……Stone(2.11上午)完成这题后,感触颇多!1.解法的多样性。
法1)转移:f[i,j]表示将第i堆到第j堆石子合并所需要的最少代价;f[i,j]=f[i,k]+f[k+1,j]+w[i,j]; W[I,j]表示将这两部分石子合并的费用(实为i到j的每堆石子的代价和,可预先处理g[i]表示从第1个到第i堆石子的代价和,则w[I,j] = g[j] – g[i-1])边界:f[I,i+1] = g[i+1]-g[i-1]目标:f[1,n]复杂度:O(n^3)显然对于数据范围而言是出不来的。
法2)算法:从第一堆石子往后找,直到找到某堆石子的前堆石子数小于或等于其后堆石子数,将这堆石子与前堆石子合并,得到新堆;从新堆处往前找,直到某堆石子数大于新堆石子数,将新堆石子插入到这堆石子后面;重复以上操作直到只剩下一堆。
预处理:c[0]:=maxlongint;c[n+1]:=maxlongint;数据结构:链表(记录+指针);2.建立指针链接时,思路要清晰。
建立指针链接时,没开发的域为空;例:new(p);q:=p^.next;则q=nil。
故不能进行如下操作:p^.ne:=p^.next^.last;而应:new(pp);pp^.last:=p;p^.next:=pp.brush(2.11上午)看了解题报告后,其优化还是不懂,就选了未优化的算法。
但是10000*10000的数组空间不够,我真是个傻子,此处可以轻易将第二维压缩,通过罗雨屏的指点,空间立刻压缩到10000*100!真神!罗雨屏咋就那么聪明呢?Brike(2.11下午)开始没做出来,看了孟来俊的总结(知识点\杂新建文件夹(2)\常用算法\动态规划\动态规划-孟来俊)和王准轩的程序后发现他们的算法有点不同,弄得我迷迷糊糊。
dp联手题总结
总结做的……不是令人满意的结果,历时一个月,靠,大梁半个月……关键子工程(project.c/cpp/pas)在大型工程的施工前,我们把整个工程划分为若干个子工程,并把这些子工程编号为1、2、……、N;这样划分之后,子工程之间就会有一些依赖关系,即一些子工程必须在某些子工程完成之后才能施工。
由于子工程之间有相互依赖关系,因此有两个任务需要我们去完成:首先,我们需要计算整个工程最少的完成时间;同时,由于一些不可预测的客观因素会使某些子工程延期,因此我们必须知道哪些子工程的延期会影响整个工程的延期,我们把有这种特征的子工程称为关键子工程,因此第二个任务就是找出所有的关键子工程,以便集中精力管理好这些子工程,尽量避免这些子工程延期,达到用最快的速度完成整个工程。
为了便于编程,现在我们假设:(1)根据预算,每一个子工程都有一个完成时间。
(2)子工程之间的依赖关系是:部分子工程必须在一些子工程完成之后才开工。
(3)只要满足子工程间的依赖关系,在任何时刻可以有任何多个子工程同时在施工,也既同时施工的子工程个数不受限制。
(4)整个工程的完成是指:所有子工程的完成。
例如,有五个子工程的工程规划表五个子工完成时间子工程1 子工程2 子工程3 子工程4 子工程5程的工程规划表:序号子工程1 5 0 0 0子工程2 4 0 0 0子工程3 12 0 0 0子工程4 7 1 1 0 0子工程5 2 1 1 1其中,表格中第I+1行J+2列的值如为0表示“子工程I”可以在“子工程J”没完成前施工,为1表示“子工程I”必须在“子工程J”完成后才能施工。
上述工程最快完成时间为14天,其中子工程1、3、4、5为关键子工程。
输入数据:第1行为N,N是子工程的总个数,N≤200。
第2行为N个正整数,分别代表子工程1、2、……、N的完成时间。
第3行到N+2行,每行有N-1个0或1。
其中的第I+2行的这些0,1,分别表示“子工程I”与子工程1、2、…、I-1、I+1、…N的依赖关系,(I=1、2、……、N)。
单调性问题总结
DP 单调性问题总结罗梓璋单调性:单调性,意思是保持同样的趋向,单调递增或者单调递减。
在DP 中,很多情况下,本来是没有单调性的,但是删去不可能的决策之后,剩下的决策会呈现单调性。
具有单调性的决策是有序的,最优决策可能直接在头或者尾O(1)得到,也可以二分查找O(logn)得到,总体比O(n)寻找最有决策的时间要少很多。
所以单调性可以解决的问题是:保留可能决策,快速寻找最优决策。
单调队列:单调队列的本质是双端队列,单调队列的内部是单调的,新元素从队尾加入,如果新元素加入后不满足单调性,那么令原来队尾的元素出队,直到新元素加入后满足单调性或者队列空了。
如单调递减队列原来是5 2 1,加入一个元素3,则队列为:5 3。
单调队列的开头元素在不满足条件时出队。
(另外一种加入元素的可能是,二分查找合适的位置,代替原来的元素,但是不能直接插入元素,在某些题目可能有。
例如上面的例子为:5 3 1或3 2 1,视具体情况。
)单调队列是最简单的处理单调性问题的数据结构,最大的用处是:维护区间最值。
维护区间最值的要求是,区间的移动方向固定。
(要保证队首不加入元素。
)既然区间移动方向固定,那么可以区间每移动一个单位,那么多了一个新的元素,少了一个旧的元素。
新的元素一定在最后,旧的元素一定在最前。
如果队首的元素已经离开了区间,那么让它出队。
我们考虑两个元素A 和B ,B 比A 优,而且B 在A 的后面,因为A 比B 先离开区间,所以有B 在A 永远也不可能是最值了。
所以新的元素加入队列后,如果队列队尾的元素不如新的元素优,那么就可以删除掉队尾原来的元素,直到队尾的元素比新元素优,才把新的元素加入队尾。
我们发现这样的队列和单调队列完全符合,队列中前一个元素一定比后一个优,满足单调性,而且模型也一样。
这样区间最值一定是队首的元素,可以O(1)求出区间最值。
能用单调队列解决的问题有一个特性:两个元素哪个比较优是可以只用它们本身就可以判断的,如果判断哪个比较优与当前状态有关,那么如果随着状态改变两个元素的优劣颠倒了, 单调队列就失去了作用。
DP算法总结
1. 资源问题1-----机器分配问题f[i,j]:=max(f[i-1,k]+w[i,j-k]);2. 资源问题2------01背包问题f[i,j]:=max(f[i-1,j-v[i]]+w[i],f[i-1,j]);3. 线性动态规划1-----朴素最长非降子序列f[i]:=max{f[j]+1}4. 剖分问题1-----石子合并f[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]);5. 剖分问题2-----多边形剖分f[i,j]:=min(f[i,k]+f[k,j]+a[k]*a[j]*a[i]);6. 剖分问题3------乘积最大f[i,j]:=max(f[k,j-1]*mult[k,i]);7. 资源问题3-----系统可靠性(完全背包)f[i,j]:=max{f[i-1,j-c[i]*k]*P[I,x]};8. 贪心的动态规划1-----快餐问题f[i,j,k]:=max{f[i-1,j',k']+(T[i]-(j-j')*p1-(k-k')*p2) div p3};9. 贪心的动态规划2-----过河f[i]=min{{f(i-k)} (not stone[i]){f(i-k)}+1} (stone[i]); +贪心压缩状态10. 剖分问题4-----多边形-讨论的动态规划F[i,j]:=max{正正f[I,k]*f[k+1,j];负负g[I,k]*f[k+1,j];正负g[I,k]*f[k+1,j];负正f[I,k]*g[k+1,j];} g为min11. 树型动态规划1-----加分二叉树(从两侧到根结点模型)F[i,j]:=max{f[i,k-1]*f[k+1,j]+c[k]};12. 树型动态规划2-----选课(多叉树转二叉树,自顶向下模型)f[i,j]表示以i为根节点选j门功课得到的最大学分f[i,j]:=max{f[t[i].l,k]+f[t[i].r,j-k-1]+c[i]};13. 计数问题1-----砝码称重f[f[0]+1]=f[j]+k*w[j];(1<=i<=n; 1<=j<=f[0]; 1<=k<=a[i];)14. 递推天地1------核电站问题f[-1]:=1; f[0]:=1;f[i]:=2*f[i-1]-f[i-1-m];15. 递推天地2------数的划分f[i,j]:=f[i-j,j]+f[i-1,j-1];16. 最大子矩阵1-----一最大01子矩阵f[i,j]:=min(f[i-1,j],v[i,j-1],v[i-1,j-1])+1;ans:=maxvalue(f);17. 判定性问题1-----能否被4整除g[1,0]:=true; g[1,1]:=false; g[1,2]:=false; g[1,3]:=false; g[i,j]:=g[i-1,k] and ((k+a[i,p]) mod 4 = j)18. 判定性问题2-----能否被k整除f[i,j±n[i] mod k]:=f[i-1,j]; -k<=j<=k; 1<=i<=n20. 线型动态规划2-----方块消除游戏f[i,i-1,0]:=0f[i,j,k]:=max{f[i,j-1,0]+sqr(len(j)+k), //dof[i,p,k+len[j]]+f[p+1,j-1,0] //not do}; ans:=f[1,m,0];21. 线型动态规划3-----最长公共子串,LCS问题f[i,j]=0 (i=0)&(j=0);f[i-1,j-1]+1 (i>0,j>0,x[i]=y[j]);max{f[i,j-1]+f[i-1,j]}} (i>0,j>0,x[i]<>y[j]);22. 最大子矩阵2-----最大带权01子矩阵O(n^2*m)枚举行的起始,压缩进数列,求最大字段和,遇0则清零23. 资源问题4-----装箱问题(判定性01背包)f[j]:=(f[j] or f[j-v[i]]);24. 数字三角形1-----朴素の数字三角形f[i,j]:=max(f[i+1,j]+a[I,j],f[i+1,j+1]+a[i,j]);25. 数字三角形2-----晴天小猪历险记之Hill同一阶段上暴力动态规划f[i,j]:=min(f[i,j-1],f[i,j+1],f[i-1,j],f[i-1,j-1])+a[i,j];26. 双向动态规划1数字三角形3-----小胖办证f[i,j]:=max(f[i-1,j]+a[i,j],f[i,j-1]+a[i,j],f[i,j+1]+a[i,j]);27. 数字三角形4-----过河卒//边界初始化f[i,j]:=f[i-1,j]+f[i,j-1];28. 数字三角形5-----朴素的打砖块f[i,j,k]:=max(f[i-1,j-k,p]+sum[i,k],f[i,j,k]);29. 数字三角形6-----优化的打砖块f[i,j,k]:=max{g[i-1,j-k,k-1]+sum[i,k]};30. 线性动态规划3-----打鼹鼠’f[i]:=f[j]+1;(abs(x[i]-x[j])+abs(y[i]-y[j])<=t[i]-t[j]);31. 树形动态规划3-----贪吃的九头龙f[i,j,k]:=min(f[x1,j1,1]+f[x2,j-j1-1,k]+d[k,1]*cost[i,fa[i]]] {Small Head}, f[x1,j1,0]+f[x2,j-j1,k]+d[k,0]*cost[i,fa[i]] {Big Head});f[0,0,k]:=0; f[0,j,k]:=max(j>0)d[i,j]:=1 if (i=1) and (j=1)1 if (i=0) and (j=0) and (M=2)0 else32. 状态压缩动态规划1-----炮兵阵地Max(f[Q*(r+1)+k],g[j]+num[k]);If (map[i] and plan[k]=0) and((plan[P] or plan[q]) and plan[k]=0);33. 递推天地3-----情书抄写员f[i]:=f[i-1]+k*f[i-2];34. 递推天地4-----错位排列f[i]:=(i-1)(f[i-2]+f[i-1]);f[n]:=n*f[n-1]+(-1)^(n-2);35. 递推天地5-----直线分平面最大区域数f[n]:=f[n-1]+n:=n*(n+1) div 2 + 1;36. 递推天地6-----折线分平面最大区域数f[n]:=(n-1)(2*n-1)+2*n;37. 递推天地7-----封闭曲线分平面最大区域数f[n]:=f[n-1]+2*(n-1);:=sqr(n)-n+2;38 递推天地8-----凸多边形分三角形方法数f[n]:=C(2*n-2,n-1) div n;对于k边形f[k]:=C(2*k-4,k-2) div (k-1); //(k>=3)39 递推天地9-----Catalan数列一般形式1,1,2,5,14,42,132f[n]:=C(2k,k) div (k+1);40 递推天地10-----彩灯布置排列组合中的环形染色问题f[n]:=f[n-1]*(m-2)+f[n-2]*(m-1); (f[1]:=m; f[2]:=m(m-1);41 线性动态规划4-----找数线性扫描sum:=f[i]+g[j];(if sum=Aim then getout; if sum<Aim then inc(i) else inc(j);)42 线性动态规划5-----隐形的翅膀min:=min{abs(w[i]/w[j]-gold)};if w[i]/w[j]<gold then inc(i) else inc(j);43 剖分问题5-----最大奖励f[i]:=max(f[i],f[j]+(sum[j]-sum[i])*i-t;44 最短路1-----Floydf[i,j]:=max(f[i,j],f[i,k]+f[k,j]);ans[q[i,j,k]]:=ans[q[i,j,k]]+s[i,q[i,j,k]]*s[q[i,j,k],j]/s[i,j];45 剖分问题6-----小H的小屋F[l,m,n]:=f[l-x,m-1,n-k]+S(x,k);46 计数问题2-----陨石的秘密(排列组合中的计数问题)Ans[l1,l2,l3,D]:=f[l1+1,l2,l3,D+1]-f[l1+1,l2,l3,D];F[l1,l2,l3,D]:=Sigma(f[o,p,q,d-1]*f[l1-o,l2-p,l3-q,d]);47 线性动态规划------合唱队形两次F[i]:=max{f[j]+1}+枚举中央结点48 资源问题------明明的预算方案:加花的动态规划f[i,j]:=max(f[i,j],f[l,j-v[i]-v[fb[i]]-v[fa[i]]]+v[i]*p[i]+v[fb[i]]*p[fb[i]]+v[fa[i]]*p[fa[i]]);49 资源问题-----化工场装箱员50 树形动态规划-----聚会的快乐f[i,2]:=max(f[i,0],f[i,1]);f[i,1]:=sigma(f[t[i]^.son,0]);f[i,0]:=sigma(f[t[i]^.son,3]);51 树形动态规划-----皇宫看守f[i,2]:=max(f[i,0],f[i,1]);f[i,1]:=sigma(f[t[i]^.son,0]);f[i,0]:=sigma(f[t[i]^.son,2]);52 递推天地-----盒子与球f[i,1]:=1;f[i,j]:=j*(f[i-1,j-1]+f[i-1,j]);53 双重动态规划-----有限的基因序列f[i]:=min{f[j]+1}g[c,i,j]:=(g[a,i,j] and g[b,i,j]) or (g[c,i,j]);54 最大子矩阵问题-----居住空间f[i,j,k]:=min(min(min(f[i-1,j,k],f[i,j-1,k]),min(f[i,j,k-1],f[i-1,j-1,k])),min(min(f[i-1,j,k-1],f[i,j-1,k-1] ),f[i-1,j-1,k-1]))+1;55 线性动态规划------日程安排f[i]:=max{f[j]}+P[I]; (e[j]<s[i])56 递推天地------组合数C[i,j]:=C[i-1,j]+C[i-1,j-1];C[i,0]:=157 树形动态规划-----有向树k中值问题F[I,r,k]:=max{max{f[l[i],I,j]+f[r[i],I,k-j-1]},f[f[l[i],r,j]+f[r[i],r,k-j]+w[I,r]]};58 树形动态规划-----CTSC 2001选课F[I,j]:=w[i](if i∈P)+f[l[i],k]+f[r[i],m-k](0≤k≤m)(if l[i]<>0);59 线性动态规划-----多重历史f[i,j]:=sigma{f[i-k,j-1]}(if checked);60 背包问题(+-1背包问题+回溯)-----CEOI1998 Substractf[i,j]:=f[i-1,j-a[i]] or f[i-1,j+a[i]];61 线性动态规划(字符串)-----NOI 2000 古城之谜f[i,1,1]:=min{f[i+length(s),2,1], f[i+length(s),1,1]+1};f[i,1,2]:=min{f[i+length(s),1,2]+words[s],f[i+length(s),1,2]+words[s]};62 线性动态规划-----最少单词个数f[i,j]:=max{f[i,j],f[u-1,j-1]+l};63 线型动态规划-----APIO2007 数据备份状态压缩+剪掉每个阶段j前j*2个状态和j*2+200后的状态贪心动态规划f[i]:=min(g[i-2]+s[i],f[i-1]);64 树形动态规划-----APIO2007 风铃f[i]:=f[l]+f[r]+{1 (if c[l]<c[r])};g[i]:=1(d[l]<>d[r]) 0(d[l]=d[r]);g[l]=g[r]=1 then Halt;65 地图动态规划-----NOI 2005 adv19910F[t,i,j]:=max{f[t-1,i-dx[d[[t]],j-dy[d[k]]]+1],f[t-1,i,j];66 地图动态规划-----优化的NOI 2005 adv19910F[k,i,j]:=max{f[k-1,i,p]+1} j-b[k]<=p<=j;67 目标动态规划-----CEOI98 subtraF[I,j]:=f[I-1,j+a[i]] or f[i-1,j-a[i]];68 目标动态规划----- Vijos 1037搭建双塔问题F[value,delta]:=g[value+a[i],delta+a[i]] or g[value,delta-a[i]];69 树形动态规划-----有线电视网f[i,p]:=max(f[i,p],f[i,p-q]+f[j,q]-map[i,j]);leaves[i]>=p>=l, 1<=q<=p;70 地图动态规划-----vijos某题F[i,j]:=min(f[i-1,j-1],f[i,j-1],f[i-1,j]);71 最大子矩阵问题-----最大字段和问题f[i]:=max(f[i-1]+b[i],b[i]); f[1]:=b[1];72 最大子矩阵问题-----最大子立方体问题枚举一组边i的起始,压缩进矩阵B[I,j]+=a[x,I,j];枚举另外一组边的其实,做最大子矩阵73 括号序列-----线型动态规划f[i,j]:=min(f[i,j],f[i+1,j-1] (s[i]s[j]=”()”or(”[]”)),f[i+1,j+1]+1 (s[j]=”(”or”[” ) , f[i,j-1]+1(s[j]=”)”or”]”);74 棋盘切割-----线型动态规划f[k,x1,y1,x2,y2]=min{min{f[k-1,x1,y1,a,y2]+s[a+1,y1,x2,y2],f[k-1,a+1,y1,x2,y2]+s[x1,y1,a,y2]};75 概率动态规划-----聪聪和可可(NOI2005)x:=p[p[i,j],j];f[I,j]:=(f[x,b[j,k]]+f[x,j])/(l[j]+1)+1;f[I,i]=0;f[x,j]=1;76 概率动态规划-----血缘关系F[A, B]=(f[A0, B]+P[A1, B])/2;f[i,i]=1;f[i,j]=0;(i,j无相同基因)77 线性动态规划-----决斗F[i,j]=(f[i,j] and f[k,j]) and (e[i,k] or e[j,k]); (i<k<j)78 线性动态规划-----舞蹈家F[x,y,k]=min(f[a[k],y,k+1]+w[x,a[k]],f[x,a[k],k+1]+w[y,a[k]]);79 线性动态规划-----积木游戏F[i,a,b,k]=max(f[a+1,b,k],f[i+1,a+1,a+1,k],f[i,a+1,a+1,k]);80 树形动态规划(双次记录)-----NOI2003 逃学的小孩朴素的话枚举节点i和离其最远的两个节点j,k O(n^2)每个节点记录最大的两个值,并记录这最大值分别是从哪个相邻节点传过来的。
托收方式中dp项下出口商的风险与防范措施
贸易欺诈风险防范措施
谨慎选择交易对象
对进口商进行充分的调查和了解,选择有信誉的合作伙伴。
合同条款明确
在合同中明确规定双方的权利和义务,防止出现模糊或歧义。
及时沟通
在交易过程中保持与买方的良好沟通,及时发现并解决任何潜在 的问题。
货物损失风险防范措施
投保货运保险
为货物购买货运保险,以降低因运输 途中损坏或丢失而产生的损失。
教训总结
03
出口商应加强对买方资信的调查,并在合同中明确规定货款的
支付方式和时间,以保障自身权益。
实际案例二:成功防范风险的出口商经验分享
案例概述
某出口商在采用DP托收方式时, 成功防范了风险,确保了货款的 顺利回收。
风险防范措施
出口商在交易前对买方进行了充 分调查,选择了信誉良好的买家 ;同时,在合同中明确了货款的 支付方式和时间,并严格按照合 同执行。
THANKS
谢谢您的观看
托收的流程
出口商向银行提交单据,并签订托收 协议;银行将单据转交给进口商所在 地的代理银行;代理银行将单据提交 给进口商;进口商付款赎单。
DP(Document against Payment)项下的特点与操作
流程
DP项下的特点
DP项下托收是指出口商在托收过程中 ,以单据作为收款保障,即出口商将 货运单据直接寄给进口商,并委托银 行代为收款。
托收方式中dp项下出口商的 风险与防范措施
汇报人: 2023-12-31
目录
• 托收方式概述 • DP项下出口商面临的风险 • 出口商风险防范措施 • 案例分析 • 总结与建议
01
托收方式概述
托收的定义与流程
托收的定义
托收是指出口商通过银行将单据转交 给进口商所在地的银行,并委托其代 为收款的一种结算方式。
北航OJ_DP问题整理
for(i=0;i<3201;i++)
f[0][i]=0;
f[1][0]=0;
for(i=1;i<=bl;i++)
for(j=1;j<=al;j++)
{
if(a[j]==b[i])
f[i%2][j]=f[(i-1)%2][j-1]+1;
else if(f[(i-1)%2][j]>f[i%2][j-1])
}
if(g[number%2]>f[number%2])
f[number%2]=g[number%2];
printf("%lld\n",f[number%2]);
}
}
}
魔族密码
时间限制:1000 ms 内存限制:8192 KB
总提交:250 (115 users) 正确提交:134 (106 users)
描述
魔族现在使用一种新型的密码系统。每一个密码都是一个给定的仅包含小写字母的英文单词表,每个单词至少包含1个字母,至多75个字母。
如果在一个由一个词或多个词组成的表中,除了最后一个以外,每个单词都被其后的一个单词所包含,即前一个单词是后一个单词的前缀,则称词表为一个词链。
biggest = a[i][j];
}
}
}
cout << biggest << endl;
cin >> m >> n;
}
return 0;
}
防盗门系统
时间限制:1000 ms 内存限制:65536 KB
总提交:560 (186 users) 正确提交:204 (152 users)
hrdp工作总结和报告
hrdp工作总结和报告2021年已经过去了,回顾这一年,我作为人力资源进步规划(hrdp)的负责人,我要对我们的工作进行总结和报告。
起首,我要感谢团队成员的辛勤付出和专业能力,正是你们的努力才使得我们的工作取得了良好的效果。
在这一年中,我们为公司成功招募了一批优秀的人才,他们的加入为公司带来了新的活力和创新思维。
我们也成功引进了一套先进的人力资源管理系统,使得员工的信息管理更加高效和规范化。
此外,我们还组织了一系列员工培训和进步规划,救助员工提升了专业技能和职业素养。
其次,我要对我们的工作中存在的问题进行分析和反思。
在招募过程中,我们有时候过于重视应聘者的学历和阅历,轻忽了人才的潜力和进步空间。
这导致有些应聘者虽然条件不完全符合,但却具备了很强的进修能力和适应能力,他们本可以为公司带来更大的价值。
同时,在员工培训和进步规划中,我们过于重视短期效果,轻忽了长期进步的规划和支持。
这使得一些员工在职业进步上出现了瓶颈,对公司的进步也造成了一定的影响。
基于以上问题和反思,我提出以下改进措施和建议。
起首,在招募过程中,我们将更加重视应聘者的潜力和进步空间,而不仅仅看重学历和阅历。
我们将建立一套科学的评估体系,以更好地发现和选拔具有潜力的人才。
其次,在员工培训和进步规划中,我们将重视长期规划和支持,为员工提供更多的进步机缘和资源,使他们能够在职业生涯中实现持续的成长。
此外,我们还将加强与其他部门的沟通和合作。
人力资源进步规划是一个综合性的工作,需要与各个部门紧密合作,以更好地满足公司的需求和员工的期望。
我们将建立定期的沟通机制,加强合作,共同推动公司的进步。
最后,我要感谢公司领导对人力资源进步规划的支持和信任。
我们将继续努力,不息改进和完善我们的工作,为公司的进步做出更大的贡献。
在新的一年里,我们将以更加饱满的热忱和坚定的信心,继续推感人力资源进步规划的落地和实施。
让我们携手共进,共同创设更加美妙的明天!。
hrdp工作总结和报告
hrdp工作总结和报告近期,我作为人力资源开发项目(HRDP)的负责人,带领团队完成了一项重要的工作。
在这篇工作总结和报告中,我将回顾我们的工作过程和取得的成果,并提出改进和进一步发展的建议。
首先,我要感谢团队成员的辛勤付出和合作精神。
在整个项目期间,团队成员充分发挥各自的专长,紧密协作,克服了各种困难和挑战。
他们的敬业精神和团队合作为项目的成功做出了重要贡献。
在这个项目中,我们的主要目标是提高员工的技能和知识水平,以适应日益变化的工作环境。
为了实现这一目标,我们进行了一系列的培训和发展活动。
首先,我们通过内部培训课程提供了员工需要的基础知识和技能。
其次,我们邀请了外部专家来给员工进行专业知识的讲座和培训。
最后,我们组织了一些团队建设活动,以提高员工之间的合作和沟通能力。
通过这些活动,我们取得了一些重要的成果。
首先,员工的技能和知识水平得到了显著提升。
通过培训和学习,员工们掌握了新的工作方法和技术,提高了工作效率和质量。
其次,员工之间的团队合作和沟通能力得到了明显改善。
团队建设活动帮助员工更好地理解和支持彼此,增强了协作和团队意识。
然而,我们也面临了一些挑战和问题。
首先,由于时间和资源的限制,我们无法为每个员工提供个性化的培训和发展计划。
这可能导致一些员工的需求没有得到充分满足。
其次,一些员工对培训和发展活动的重要性缺乏足够的认识和意识,导致参与度不高。
为了解决这些问题,我们可以进一步优化培训计划,提供更加灵活和个性化的培训方式。
同时,通过加强宣传和意识教育,提高员工对培训和发展的重视和参与度。
在未来的工作中,我们将继续努力提高员工的技能和知识水平。
我们计划加强与外部合作伙伴的合作,邀请更多的专家参与培训和发展活动。
同时,我们将建立一个系统的反馈机制,定期评估员工对培训和发展活动的满意度和效果。
这将帮助我们及时调整和改进我们的工作。
总之,我对我们团队的工作成果感到非常满意。
通过我们的努力,员工的技能和知识水平得到了显著提升,团队合作和沟通能力得到了明显改善。
简单dp问题汇总
简单dp问题汇总简单dp问题总共分为四类:找钱问题,01背包问题,最长公共⼦序列问题,最长递增⼦序列问题------------------------------------------------------------------------------------------------------------------------------------------找钱问题这类问题是dp中最基础的问题,其形式是最外层循环为钱的种类,第⼆层是钱的⾦额,最末层是⽤多少数量的钱实现但是核⼼是建⽴在后续能⽤前⾯的值推出的基础上。
dp[j][k] = dp[j][k] + dp[j - 1][k - money[i]];j表⽰⽤多少张钱,k表⽰⽬前的⾦额这种问题要先知道可⽤的钱币是什么,然后先把他存在数组⾥1 #include <iostream>2 #include <cstring>3using namespace std;4int money[5] = { 1,5,10,25,50 };5long long int dp[300][300] = {0};6int ans[300] = {0};7int main()8 {9int n;10 memset(dp, 0, sizeof(dp));11 dp[0][0] = 1;//切记是从dp[0][0]开始的12for (int i = 0; i < 5; i++)13 {14for (int j = 1; j <= 100; j++)15 {16for (int k = money[i]; k <252; k++)//之前开太⼤了,爆栈17 {18 dp[j][k] = dp[j][k] + dp[j - 1][k - money[i]];1920 }21 }22 }2324for (int i = 0; i <252; i++)25 {26 ans[i] = 0;27for (int j = 0; j <= 100; j++)28 {29 ans[i] += dp[j][i];30 }31 }32while (cin >> n) cout << ans[n] << endl;33return0;34 }------------------------------------------------------------------------------------------------------------------------------------------0/1背包问题这问题核⼼就是控制背包容量,然后问当前物品装还是不装的问题纵向是第⼏个物品横向是背包容量dp[j][k] = max(dp[j - 1][k], dp[j - 1][k - bone[j].volume] + bone[j].value);不装就和前⼀个情况⼀样,装就要在当前背包容量减去所要装的⾻头体积的情况下再加上此⾻头的价值附加:如果背包的数为⼩数,⽐如两位⼩数,则对每个数*100,把他提升为整数问题(hdu1864)1 #include <cstdlib>2 #include <cctype>3 #include <iterator>4 #include <vector>5 #include <cstring>6 #include <cassert>7 #include <map>8 #include <queue>9 #include <set>10 #include <stack>11 #include <stdio.h>12#define ll long long13#define INF 0x3f3f3f3f14#define ld long double15const ld pi = acos(-1.0L), eps = 1e-8;16using namespace std;17int dp[1010][1010];18struct Bone19 {20int value, volume;21 };22 Bone bone[1010];23int main()25 ios::sync_with_stdio(false);26 cin.tie(0);27int n;28 cin >> n;29for (int i = 1; i <= n; i++)30 {31 memset(dp, 0, sizeof(dp));32int num, volume;33 cin >> num >> volume;34for (int j = 1; j <= num; j++) cin >> bone[j].value;35for (int j = 1; j <= num; j++)cin >> bone[j].volume;3637for (int j = 1; j <= num; j++)38 {39for (int k = 0; k <= volume; k++)40 {41if (bone[j].volume > k)dp[j][k] = dp[j - 1][k];//如果当前⾻头都⽐被背包⼤的话,那肯定不能放进去的42else dp[j][k] = max(dp[j - 1][k], dp[j - 1][k - bone[j].volume] + bone[j].value);43 }44 }4546 cout << dp[num][volume] << endl;47 }48 }------------------------------------------------------------------------------------------------------------------------------------------最长公共⼦序列问题感觉这个可以背下来遍历⼀下,如果元素相同,就找dp[i-1][j-1]的那个值+1;否则就找dp[i][j-1]和dp[i-1][j]中最⼤的1 #include <iostream>2 #include <cmath>3 #include <algorithm>4 #include <cstring>5 #include <string>6using namespace std;7int dp[1005][1005];8string s1, s2;9int main()10 {1112while (cin >> s1 >> s2)13 {14 memset(dp, 0, sizeof(dp));15for (int i = 1; i <= s1.size(); i++)16 {17for (int j = 1; j <= s2.size(); j++)18 {19if (s1[i - 1] == s2[j - 1])20 {21 dp[i][j] = dp[i - 1][j - 1] + 1;22 }23else24 {25 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);26 }27 }28 }29 cout << dp[s1.size()][s2.size()] << endl;30 }31 }------------------------------------------------------------------------------------------------------------------------------------------最长递增⼦序列⽤两个循环定位第⼀个循环定位当前值i第⼆个循环依次循环j从开始到当前值,只要该值⽐当前固定的值(第⼀层循环)⼩,那么就检查以它为结尾的最长递增⼦序列长度是多少,找出最长的那个⼦序列长度,dp[i] = maxi + 1;1 #include <iostream>2using namespace std;3int st[10000];4int dp[10000] = { 0 };5int main()7int n;8 cin >> n;9for (int i = 1; i<=n; i++) cin >> st[i];10 dp[1] = 1;//第⼀个数最长只能为111int ans = 1;12for (int i = 2; i <= n; i++)13 {14int maxi = 0;15for (int j = 1; j < i; j++)16 {17if (dp[j] >maxi &&st[j]>st[i]) maxi = dp[j];18 }19 dp[i] = maxi + 1;//如果该数前⾯的数都不满⾜,那么他的长度就是1,从他⾃⼰开始20if (dp[i] > ans) ans = dp[i];//找出最⼤的21 }22 cout << ans << endl;23 }优化:可以添加⼀个辅助数组,来存最长递增⼦序列辅助数组先存⼊原数组的第⼀个,之后依次遍历原数组的每⼀个值如果原数组的当前遍历值⼤于辅助数组的最后⼀个值,那么当前遍历值直接加⼊辅助数组,更新辅助数组的最后⼀个值如果原数组的当前遍历值⼩于等于辅助数组的最后⼀个值,那么替换辅助数组中第⼀个⼤于等于该遍历值的值⽐如原数组 1 3 6 5那么辅助数组依次为 1/1,3/1,3,6/1,3,5最后最长递增⼦序列的长度即为辅助数组的⼤⼩代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;int num[100010],arr[100010];int main(){int n;while (cin >> n){memset(arr, 0, sizeof(arr));for (int i = 1; i <= n; i++){cin >> num[i];}arr[1] = num[1];int len = 1;for (int i = 2; i <= n; i++){if (num[i] > arr[len]){len++;arr[len] = num[i];}else{int j = lower_bound(arr+ 1, arr + len + 1, num[i]) - arr;arr[j] = num[i];}}cout << len << endl;}}。
DP网调试心得及终端电阻原理
调试DP网心得最近一段时间一直在外面调一个水处理的项目,2套414-2DP系统,还各加了一块DP扩展模板,带了近百个站(都是PLC模板,没有带传动装置),打DP网时几乎都是一次上电就通,就遇到一次问题,还是因为施工单位做的DP头有问题。
自己又紧了紧线,就OK了。
总结了一下这次打DP网比较顺的原因:1、在家的时候自己做了大量试验,每个站的耦合器和模板都仔细研究了一遍。
别怕麻烦,在家麻烦点总比到现场出问题要好得多。
2、在做硬件配置时,标清楚各个站的名称,便于去拨站地址。
3、上电前仔细检查了一遍电源,站地址,DP头上的ON/OFF等是否正确。
4、说一下那个DP头出的问题:当时的现象是从那个站开始,后面的站都找不到,当时把DP头拆开看了下,拔了拔线,没问题啊!又去它的下一个站看DP头,量线路,都没问题。
后来怀疑是距离远,降了下速率,也不通。
没辙,想再最后仔细查下DP头,再不行就断开后面的网一个个试。
这次终于被我发现问题了,原来两根线里有一根拧紧了,另一根没拧紧,所以前后拉,看不出什么,左右一拉立马就看出来了。
只怪自己检查不细,拧紧后,全都OK了。
5、(后加于7月17日)前两天有个朋友给我打电话,说他连的一个315-2DP带2个ET200的DP网就是不通,由于我没在现场,只能根据他说的情况给他说了几种可能的解决办法,结果都不行。
第二天他给我打来电话,说网做通了,原来问题出在只在DP头的出线处接了DP线,而进线处没接线。
相信老手们都很清楚这点吧,在这提醒一下新手们:如果DP头上只接一根DP线,一定要接到DP头的进线位置!(记得当初这个问题也害我折腾了半天,试了好几次才发现是这么回事)6、(后家于10月16日)当时在现场还出过一档子事,当时没整明白,前两天遇到了公司一位专家级的人物,他给解释了下。
当时的情况时这样的:由于土建的原因,当时有一个远程站无法接线,所以就甩掉了这个站,把该DP网上的其他站(几乎都是机旁箱,只有4、5个站是带了输出模板,直接控制设备的,总共有好几十个站,整个网距离也小一百米)给做好了,并且投入生产了。
部门DP的工作汇报与年终总结
部门DP的工作汇报与年终总结一、工作汇报在过去的一年里,部门DP致力于推动公司的数字化转型和数据驱动决策。
通过与各部门的合作,我们取得了一系列重要成果。
1. 数据分析与报告我们的团队利用各类数据工具和技术,从公司多个数据源收集数据,并进行深入分析。
每月,我们制作数字化报告,对公司各项关键指标进行详细解读,为各级管理层提供了有力的决策依据。
2. 业务流程优化部门DP与其他部门紧密合作,评估并改进现有的业务流程。
我们通过数据分析发现了一些不足之处,进而提出了一系列的改进方案。
这些改进措施大大提高了工作效率,降低了成本,并且帮助公司更好地满足客户需求。
3. 数据安全与隐私保护我们深知数据安全和隐私保护的重要性,因此在工作中特别注重信息的保密性。
我们与IT团队紧密合作,采取了一系列措施来保护公司的数据资产,包括加强网络安全防护、进行数据备份和加密等。
4. 数据培训与支持作为数据部门,我们致力于提高公司员工的数据素养和数据分析能力。
我们定期组织培训和研讨会,分享最新的数据分析技术和行业趋势。
同时,我们也提供日常的数据支持和咨询服务,帮助员工解决实际工作中遇到的数据问题。
二、年终总结在过去一年中,部门DP取得了显著的成绩,向公司的数字化转型和数据驱动决策迈出了重要一步。
1. 成果总结我们通过数据分析为公司提供了全面准确的业务报告,帮助高层管理层了解公司的运营状况和潜在机会。
与其他部门的合作,使我们能够深入挖掘公司的数据资源,提出改进措施并实施,为公司带来了实实在在的效益。
2. 问题与挑战在工作中,我们也遇到了一些问题和挑战。
其中包括数据质量不稳定、数据源多样化导致的数据整合难题以及数据隐私的保护等方面。
我们将进一步优化数据采集和处理流程,加强与其他部门的沟通和协作,以解决这些问题。
3. 未来规划基于对过去一年工作的总结和经验,部门DP将继续致力于推动数字化转型和数据驱动决策。
我们计划进一步完善数据分析和报告体系,持续改进业务流程,并加强数据安全与隐私保护。
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]。
斜率优化DP总结
斜率优化DP总结前⾔(本⽂中的图⽚都由WPS出品)DP是OI中重要的⼀部分⼀般来说,因为DP会把之前的结果保存下来,所以时间复杂度还是⽐较优秀的但是在某些情况下,时间复杂度仍然超出了题⽬的限制,这是我们就要考虑对其进⾏优化DP的优化⼀般从状态、决策、转移三个⽅⾯去考虑⽽斜率优化则是对决策进⾏优化的⼀种⽅法它适⽤于类似f[i]=min/max(a[i]×b[j]+c[i]+d[j]) 的⽅程例题(洛⾕ P4072 [SDOI2016]征途)题⽬描述Pine开始了从S地到T地的征途。
从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站。
Pine计划⽤m天到达T地。
除第m天外,每⼀天晚上Pine都必须在休息站过夜。
所以,⼀段路必须在同⼀天中⾛完。
Pine希望每⼀天⾛的路长度尽可能相近,所以他希望每⼀天⾛的路的长度的⽅差尽可能⼩。
帮助Pine求出最⼩⽅差是多少。
设⽅差是v,可以证明,v×m2是⼀个整数。
为了避免精度误差,输出结果时输出v×m2。
输⼊格式第⼀⾏两个数n、m。
第⼆⾏n个数,表⽰n段路的长度输出格式⼀个数,最⼩⽅差乘以m2后的值输⼊输出样例输⼊ #15 21 2 5 8 6输出 #136说明/提⽰对于 30% 的数据,1≤n≤10对于 60% 的数据,1≤n≤100对于 100% 的数据,1≤n≤3000保证从S到T的总路程不超过 30000 。
分析要对⼀个状态转移⽅程进⾏优化,⾸先要把最朴素的⽅程写出来在本题中,稍加推导即可写出时间复杂度为O(m×n2)的状态转移⽅程s2×m2=(v1−¯v)2+(v2−¯v)2+...+(vm−¯v)2m×m2s2×m2=((v1−¯v)2+(v2−¯v)2+...+(vm−¯v)2)×ms2×m2=m×m∑i=1v2i+m2ׯv2−2×mׯv×sum[n]⼜因为¯v=sum[n]m所以s2×m2=m×m∑i=1v2i−sum[n]×sum[n]后⾯的值是固定的,所以我们只需要让前⾯的值最⼩化即可我们设f[i][j]为前i天分成j段所得到的最⼩值那么就有f[i][k]=min(f[j][k−1]+(sum[i]−sum[j])2)展开就有f[i][k]=f[j][k−1]+sum[i]2+sum[j]2−2×sum[i]×sum[j]接下来就是本⽂的重点:如何⽤斜率优化这类⽅程⾸先,你需要掌握⼀次函数y=kx+b的图像和性质这应该问题不⼤下⾯我们就要对⽅程进⾏移项,使其变成易于优化的形式f[j][k−1]+sum[j]2=2×sum[i]×sum[j]+f[i][k]−sum[i]2我们发现,这和⼀次函数的解析式完全吻合我们把f[j][k−1]+sum[j]2看成y把2×sum[i]看成k把sum[j]看成x把f[i][k]−sum[i]2看成b这样,对于每⼀个i来说,直线的k是确定的我们要使f[i][k]最⼩,也就是要使b最⼩Processing math: 100%我们可以把所有的j想象成空间坐标为(sum[j],f[j][k−1]+sum[j]2)中的点知道了斜率,知道了直线上的点,那么这条直线就确定了那么我们考虑什么样的点使直线的b最⼩直线l是我们要移动的直线,平⾯中的点是可以转移的j值我们会发现当当前点和后⼀个点形成的直线的斜率恰好⼤于直线l的斜率时,由当前点转移决策是最优的在这⾥要特别强调⼀下:本题中斜率k和横坐标x均为单调递增的,对于k和x不单调递增的情况,处理⽅式不同这就是代码⾥⾯的while(head<tail && xl(q[head],q[head+1])<2*sum[j]) head++;我们再去考虑什么样的点肯定不会对结果产⽣贡献上⾯的图中2号节点是⽆论如何也不会更新其它节点的因为1号节点或3号节点总会⽐它更优这就是代码⾥的while(head<tail && xl(j,q[tail-1])>=xl(j,q[tail])) tail--;整个过程就相当于维护了⼀个下凸包在求斜率的函数中,我们要判掉x相等的情况,在某些时候,还要判掉y相等的情况double X(int id){return (double)sum[id];}double Y(int id){return (double)(g[id]+sum[id]*sum[id]);}double xl(int i,int j){if(std::fabs(X(i)-X(j))<eps){if(std::fabs(Y(i)-Y(j))<eps) return 0;else if(Y(i)>Y(j)) return 1e18;else return -1e18;}return (Y(i)-Y(j))/(X(i)-X(j));}拓展⼀:斜率不单调但x单调如果斜率不是单调递增,我们就不能从前⾯清空队列直接转移⽐如上⾯这幅图如果在遇到直线m时⼀直从前清空队列的话那么就会把3号决策点弹出队列但是如果之后遇到⼀个斜率⽐较⼩的直线l那么就不能转移到最优解典型的例题是朴素的状态转移⽅程为f[i]=f[j]+(sumc[i]−sumc[j])∗sumt[i]+s∗(sumc[n]−sumc[j]);在这⼀道题中,作为斜率的sumt不再单调但是x之仍然是单调的所以我们可以⽤维护⼀个斜率单调的队列每次在队列中⼆分答案值得⼀提的是,出题⼈精⼼准备了卡精度的数据,所以我们要把⼆分时的除法改为乘法代码#include <cstdio>#define rg registerinline int read() {rg int x = 0, fh = 1;rg char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-')fh = -1;ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}return x * fh;}typedef long long ll;const int maxn = 1e6 + 5;int t[maxn], c[maxn], n, s, q[maxn], head, tail;ll f[maxn], sumt[maxn], sumc[maxn];double Y(int i) { return (double)(f[i] - s * sumc[i]); }double X(int i) { return (double)sumc[i]; }double xl(int i, int j) {if (X(i) == X(j)) {if (Y(i) > Y(j))return 1e18;elsereturn -1e18;}return (double)(Y(i) - Y(j)) / (X(i) - X(j));}int ef(double now) {int l = head, r = tail, mids;while (l < r) {mids = (l + r) >> 1;if ((X(q[mids]) > X(q[mids + 1]) &&Y(q[mids]) - Y(q[mids + 1]) < now * (X(q[mids]) - X(q[mids + 1]))) ||(X(q[mids]) < X(q[mids + 1]) &&(Y(q[mids + 1]) - Y(q[mids]) < now * (X(q[mids + 1]) - X(q[mids])))))l = mids + 1;elser = mids;}return q[l];}int main() {n = read(), s = read();for (rg int i = 1; i <= n; i++) {t[i] = read();c[i] = read();sumt[i] = sumt[i - 1] + t[i];sumc[i] = sumc[i - 1] + c[i];}head = tail = 1;for (rg int i = 1; i <= n; i++) {rg int wz = ef((double)(sumt[i]));f[i] = f[wz] + (sumc[i] - sumc[wz]) * sumt[i] + s * (sumc[n] - sumc[wz]);while (head < tail && xl(i, q[tail - 1]) >= xl(i, q[tail])) tail--;q[++tail] = i;}printf("%lld\n", f[n]);return 0;}扩展⼆、x不单调没有找到x不单调但是k单调的题但是却有⼀道x不单调k也不单调的题对于这道题,我们同样可以写出最朴素的⽅程f[i]f[j]+(h[i]−h[j])∗(h[i]−h[j])+sum[i−1]−sum[j]神奇的⼀点是h数组既作为直线的斜率⼜作为x⽽且h并不单调这是我们就不能再⽤单调队列去维护,因为凸包的形状在不断改变本题可以⽤李超线段树或者平衡树动态维护凸包解决但是还有⼀种CDQ分治离线处理的⽅法直接⼈为地排出单调性,像普通单调队列那样维护就可以了如果左侧斜率递增,并且左侧编号⼩于右侧,那么可以通过单调队列维护左侧的凸包来更新右侧答案并且这样⼀定能够遍历出每个节点的所有决策点代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstring>#include<cmath>#define rg registerinline int read(){rg int x=0,fh=1;rg char ch=getchar();while(ch<'0' || ch>'9'){if(ch=='-') fh=-1;ch=getchar();}while(ch>='0' && ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*fh;}const int maxn=1e5+5;const double eps=1e-6;typedef long long ll;int n,h[maxn],w[maxn];ll f[maxn],sum[maxn];double X(int id){return (double)h[id];}double Y(int id){return (double)(f[id]+1LL*h[id]*h[id]-sum[id]);}double xl(int i,int j){if(std::fabs(X(i)-X(j))<eps){if(std::fabs(Y(i)-Y(j))<eps) return 0;else if(Y(i)>Y(j)) return 1e18;else return -1e18;} else {return (Y(i)-Y(j))/(X(i)-X(j));}}bool cmp(int aa,int bb){return h[aa]<h[bb];}int tmp[maxn],p[maxn],q[maxn];void solve(int l,int r){if(l==r) return;rg int mids=(l+r)>>1,head=l-1,tail=mids;for(rg int i=l;i<=r;i++){if(p[i]<=mids) tmp[++head]=p[i];else tmp[++tail]=p[i];}for(rg int i=l;i<=r;i++){p[i]=tmp[i];}solve(l,mids);head=1,tail=0;for(rg int i=l;i<=mids;i++){while(head<tail && xl(p[i],q[tail-1])>=xl(p[i],q[tail])) tail--;q[++tail]=p[i];}for(rg int i=mids+1;i<=r;i++){while(head<tail && xl(q[head+1],q[head])<=2.0*h[p[i]]) head++;f[p[i]]=std::min(f[p[i]],f[q[head]]+1LL*(h[p[i]]-h[q[head]])*(h[p[i]]-h[q[head]])+sum[p[i]-1]-sum[q[head]]); }solve(mids+1,r);head=l,tail=mids+1;for(rg int i=l;i<=r;i++){if(tail>r || (head<=mids && h[p[head]]<h[p[tail]])) tmp[i]=p[head++];else tmp[i]=p[tail++];}for(rg int i=l;i<=r;i++){p[i]=tmp[i];}}int main(){memset(f,0x3f,sizeof(f));n=read();for(rg int i=1;i<=n;i++){h[i]=read();p[i]=i;}for(rg int i=1;i<=n;i++){w[i]=read();sum[i]=sum[i-1]+w[i];}std::sort(p+1,p+1+n,cmp);f[1]=0;solve(1,n);printf("%lld\n",f[n]);return 0;}总结虽然斜率优化看起来很难,但是熟能⽣巧,多打⼏遍就能掌握。
DP总线故障主要是由以下原因引起的
之南宫帮珍创作总线故障主要是由以下原因引起的: 1、网络接头欠好使 2、线路有破损 3、中间网络接头开关位置分歧毛病4、电源干扰5、接头处进线出线搞反 6、某一通讯模块损坏罕见故障处置网络故障比一般的电气故障较难解决, 因此引起的停机时间较长.虽然它发生的频率较少, 可是正因为这样, 使设备人员忽略了对它的重视, 也因此缺乏处置次类故障的经验.一旦呈现故障, 经常摸不到头绪, 延误开机时间. 用双绞线连接的电气网络结构较为简单, 一般采纳线形结构, 用电缆把IM308-C直接与ET2OO 连接, 一旦发生通讯故障, IM308-C的BF红灯会亮或闪.这时第一步应检查S5法式中的诊断信息, 是哪几个站点呈现了问题, 然后根据图纸找出这些站点的现场位置, 看这些ET200的故障灯有没有亮, 是一块亮还是好几块一起亮.如果只有一块亮, 那么可以判定这块板子有问题, 应及时更换;如果好几块一起亮, 应查图纸找出最前面的一块, 逐一检查更换, 直到故障灯全部暗.如果, 在结束了这步工作, 故障仍未排除, 那么就要考虑网络的结构设置等问题了.前面已经说过, PROFIBUS的网络配置是由COM PROFIBUS这个软件完成的.必需确认没有人改过网络的配置, 或者IM308-C的闪存卡MEMORY CAR坏了, 造成网络欠亨, 然后做出相应的对策, 烧卡或是重新配置. 光纤网络的故障比力复杂.如果IM308-C的BF灯亮, 那么尽快查出连接到这块板子的OLM的各通道的灯是否有变动.我们用的OLM有四个通道, 第一是连接到IM308-C上的, 如果这个灯变红, 那么说明这路通道有问题, 就要查是否双绞线或者连接器有故障.第二通道一般不用.第三, 第四通道是通过光缆实现OLM之间的连接.三、四通道的灯变红是说明这个通道的通讯呈现问题, 那么需要用专门的工具检测光缆是否断裂或者衰减过多, 或者光缆的接头松动引起信号中断或是闪动.因为冗余的结构注定了两个OLM之间的通讯有问题不会影响整个网络.所以, 起码有两对OLM之间的光缆有问题才会引起网络的通讯故障.固然不排除OLM自己坏失落.通常, 要查出是哪几个段呈现问题是比力花时间的, 因为一个网络可以有很多个OLM, 查起来相当烦琐, 需要极年夜的耐心和相互的协调配合.如果ET200坏, 可参照电气网络的排故步伐. 本模块是PROFIBUS-DP现场总线协议与RS485(ASCII)协议之间相互转换的桥.可以实现PROFIBUS-DP数据与RS485数据之间相互转换.字节数据是以8位ASCII码方式编码, 由ASCII码字符串组成的报文构成用户的自界说协议.本说明书为RS485-Profibus协议转换模块(版本V2.2)的使用说明. 一、模块设置: 1、RS485通信波特率设置:在组态软件里, 通过选择设备参数(device-specific parameter)设置RS485通信波特率, 可设定为:1.2Kbps、2.4Kbps、4.8Kbps、9.6Kbps、19.2Kbps.缺省为:4.8Kbps.此处设定的通信波特率与RS485设备设定的必需一致. 2、RS485通信字符格式设置:在组态软件里, 通过选择设备参数(device-specific parameter)设置通信字符格式, 可设定为:⑴、一个起始位、八个数据位, 一个停止位. ⑵、一个起始位、八个数据位, 一个奇效验位、一个停止位. ⑶、一个起始位、八个数据位, 一个偶效验位、一个停止位. 缺省为:一个起始位、八个数据位, 一个停止位. 此处设定的字符格式与RS485设备设定的必需一致. 组态软件中RS485通信字符格式设置 3、用户诊断功能的选择:本模块可提供三项用户事件诊断, 在组态软件里, 通过选择设备参数(device-specific parameter)选择是否激活用户诊断.选择(NOEXTERNAL DIAG)不激活(即呈现用户事件诊断不向主站报警), 选择(EXTERNAL DIAG)激活(即呈现用户事件诊断向主站报警), 用户事件诊断界说:UNIT_DIAG_BIT(0)=“BAUD ERROR“, 即波特率选择毛病UNIT_DIAG_BIT(1)=“BAS_BAS_BAS_BAS_BAS_BAS_BAS_P arity ERROR“, 即字符格式选择毛病UNIT_DIAG_BIT(2)=“TONGXUN ERROR“, 即本模块与用户设备通信故障一旦激活了诊断, 在S7法式块中就必需组态界说OB82,OB85,OB86,OB87和OB122等组织块.否则诊断中断发生时, OB块不存在会招致CPU停机.模块发生通讯诊断报错后, 如通讯毛病消逝, 通讯自动恢复. 缺省为不激活诊断组态软件中用户诊断功能的设置 4、PROFIBUS 站地址设置:轻轻在模块高度方向挤压侧盖, 可将模块正面的侧盖翻开.此时可见设置PROFIBUS地址的拨码DIP 开关.拨码开关的第一位至第七位为站地址设置位, OFF=1, ON=0.站号为二进制编码, 第1位为低位, 第8位为高位, 可在00000000到01111110间选择(十进制0-126), 第8位固定为0, 模块出厂默认地址为7.DIP开关编码地址解析如下所示. BIT位876543 2 1 开关位on on on on on off off off BAS_BAS_BAS_BAS_BAS_BAS_BAS_Address=0×27+0×26+0×25+0×24+0×23+1×22+1×21+1×20=7拨码DIP开关的改变必需给模块重新上电才华生效. 地址的拨码DIP开关 5、终端电阻的连接: PROFIBUS-DP端和RS485真个终端电阻均已设计在模块内, 如果需要加终端电阻, 用跳线连接相关端子即可.连接方式如下: PROFIBUS-DP端:将A11与A1短接, 将B11与B1短接 RS485端:将A22与A2短接, 将B22与B2短接二、装置: 1、将模块嵌入35MM标准DIN槽内(外型尺寸:97 x85 x33 mm, 重量:约200g). 2、端子接线图:如图所示, 端子0(24V)——24V直流电源正端端子1——24V直流电源负端端子2(A11)——PROFIBUS-DP终端电阻端端子3(A1)——PROFIBUS-DP的A端端子4(B1)——PROFIBUS-DP的B 端端子5(B11)——PROFIBUS-DP终端电阻端端子6(A22)——RS485的终端电阻端端子7(A2)——RS485的A端端子8(B2)——RS485的B端端子9(B22)——RS485的终端电阻端三、把持法式: 1, 设备的GSD文件在厂家提供的光盘中, 文件名485DP112.GSD.进入STEP7的硬件配置HW Config, 通过组态软件“options/intall GSD file”功能完成GSD文件的装置.设备的GSD文件装置后, 模块将集成到组态软件STEP7的硬件目录中, 模块在硬件目录中的位置路径是:/PROFIBUS DP/BAS_BAS_BAS_BAS_BAS_BAS_BAS_AdditionalBAS_BAS_BAS_BAS_BAS_BAS_BAS_Field Devices/Gateway, 模块名称为:RS485ToProfibusDP. 2, 将模块作为PROFIBUS-DP 从站组态到PROFIBUS-DP主系统, 注意分配的地址必需与模块设置的地址一致.从站的波特率自动与主站匹配适应. 3, 将对用户设备的把持命令从PROFIBUS-DP主站输出( Q BAS_Adress)数据区发送到用户设备, 从用户设备获得的数据送入PROFIBUS-DP主站输入(I BAS_Adress)数据区. 四、数据交换:本模块是PROFIBUS-DP现场总线协议与RS485(ASCII)协议之间相互转换的桥.模块实现PROFIBUS-DP数据与RS485数据之间双向的相互转换和传递.协议桥两真个数据以字节为单位, 报文帧最年夜长度取决于数据交换区的组态长度.数据是以8位ASCII码方式编码, 由ASCII码字符串组成的报文构成用户的自界说协议帧, 报文的具体组成一般取决于RS485设备. 用户只要在需要时将发送的数据赋值到相应PROFIBUS-DP主站的输出数据区, 数据即可经PROFIBUS-桥-RS485发送到用户的设备侧.而从用户设备返回的数据经RS485-桥-PROFIBUS送入PROFIBUS-DP主站输入数据区. 报文数据的完整性, 正确性, 校验和的核算等需要用户自己编程处置.如果用户能提供详细的报文结构和组成, 报文的处置逻辑也可以由我们编程, 然后固化在网关模块内部, 从而简化用户的编程工作.如用户有此需求可以在订货时提出, 我们将配合实现. 建议用户根据自己所有协议帧的长度界说通讯数据交换I/Q区的组成和长度.输入I区和输出Q区的年夜小相互自力, 互不相干.当通讯数据交换I/Q区的组成和长度与用户自界说协议帧完全一致时, 通讯效率最高.当两者纷歧致时, 会因过剩I/Q区数据的发送和接收引起通讯双方无意义的通讯延迟.为保证通讯数据交换I/Q区的组成和长度与用户自界说协议帧完全一致, 需要用户在订货时给出通讯发送帧和接收帧的长度, 我们的工程师就会据此界说GSD文件的内容.用户收到货以后需要重新定制GSD文件的话, 请随时与我们联系.我们将根据您的要求重新界说GSD,并EMAIL到你的信箱.联系方式见页脚热线德律风. 五、性能指标:供电电压:24V DC±5%功率消耗:2W 环境温度:-20°C ~70°C极限温度:-40°C ~85°C PROFIBUS-DP波特率:9.6Kbps-3BAS_BAS_BAS_BAS_BAS_BAS_BAS_Mbps MODBUS波特率:1.2Kbps-19.2BAS_BAS_BAS_BAS_BAS_BAS_BAS_Kbps I/O 数据长度:I/O区最年夜长度是112byte, 即输入112字节, 输出112字节.也可以由用户订货时指定. 六、注意事项: 1, 如果PROFIBUS通信指示灯(绿色DP)不亮, 说明PROFIBUS端通信失败, 应将通信电缆A、B互换. 2, 如果本模块与用户设备无法通信, 应检查波特率设置是否正确, 字符格式是否正确.如仍无法通信, 应将RS485通信电缆A、B互换. 3, 如果电源指示灯(红色ON)不亮, 则电源正负接反了, 电源换向即可恢复正常.本产物有电源反向呵护. 4, 包装透明袋中的红色塑料扣用于模块并列装置时, 将相邻模块固定锁扣在一起. 七、配套电源配套电源是为DP200系列I/O模块和网关专门设计制造的开关电源.配套电源为模块式的结构, 外型与网关模块类似, 略小.卡轨装置, 紧凑小巧, 输出波纹小, 非常适合与DP200系列配套使用.电源分5W和10W 两种规格, 下为电源模块的详细性能数据. 技术规范简称模块电源5W 模块电源10W 备注型号名称PM230-24/5 PM230-24/10 订货号输入 230VAC 230VAC 输出 24VDC 24VDC 208mA 416mA 最年夜5W 10W 装置方式 35mm卡轨 35mm卡轨环境条件 0℃~+55℃ 0℃~+55℃使用-22℃~+80℃-22℃~+80℃贮存 25℃时95%, 无凝结 25℃时95%, 无凝结防护品级 IP20 IP20 外形尺寸(宽×高×深)mm 20×80×60 20×80×60 重量(g)约200 约200 如果年夜家在各自的工程中遇到RS485、RS232要转换成PROFIBUS问题时, 请登岸我们的网站或联系我, 我将为你提供周到的服务和帮手. PROFIBUS提供了三种数据传输类型:(1)用于DP和FMS的RS485传输. (2)用于PA的IEC1158-2传输. (3)光纤1.用于DP/FMS的RS485传输技术由于DP与FMS系统使用了同样的传输技术和统一的总线访问协议, 因而, 这两套系统可在同一根电缆上同时把持. RS-485传输是PROFIBUS最经常使用的的一种传输技术.这种技术通常称之为H2.采纳的电缆是屏蔽双绞铜线. RS-485传输技术基本特征:(1)网络拓扑:线性总线, 两端有有源的总线终端电阻. (2)传输速率:9.6K bit /s12M bit/ s (3)介质:屏蔽双绞电缆, 也可取消屏蔽, 取决于环境条件(EMC). (4)站点数:每分段32个站(不带中继), 可多到127个站(带中继). (5)插头连接:最好使用9针D型插头. 2. RS-485传输设备装置要点(1)全部设备均与决线连接. (2)每个分段上最多可接32个站(主站或站). (3)每段的头和尾各有一个总线终端电阻, 确保把持运行不发生误差.两个总线终端电阻必需永远有电源. (4)当分段站超越32个时, 必需使用中继器用以连接各总线段.串连的中继器一般不超越3个. (注:中继器没有站地址, 但被计算机在每段的最多站数中)(5)电缆最年夜长度取决于传输速率.如使用A型电缆, 则传输速率与长度如下:波特率:(K bit/s)9.6 19.2 93.75 187.5 500 1500 1200 距离/段(M) 1200 1200 1200 1000 400 200 100 (6) A型电缆参数:阻抗:135-165Ω 电容:<30 pf / m 回路电阻:110Ω线规:0.64mm 导线面积:>0.34mmΩ(7) RS-485的传输技术的PROFIBUS网络最好使用9针D型插头. (8)当连接各站时, 应确保数据线不要拧绞, 系统在高电磁发射环境(如汽车制造业)下运行应使用带屏蔽的电缆,屏蔽可提高电磁兼容性(EMC). (9)如用屏蔽编织线和屏蔽箔, 应在两端与呵护接地连接, 并通过尽可能的年夜面积屏蔽接线来复盖, 以坚持良好的传导性.另外建议数据线必需与高压线隔离. (10)超越500K bit/s的数据传输速率时应防止使用短截线段, 应使用市场上现有的插头可使数据输入和输出电缆直接与插头连接, 而且总线插头连接可在任何时候接通或断开而其实不中断其它站的数据通信. 3用于PA的IEC1158-2传输技术(1)数据IEC1158-2的传输技术用于PROFIBUS-PA, 能满足化工和石油化工业的要求.它可坚持其本征平安性, 并通过总线对现场设备供电. (2) IEC1158-2是一种位同步协议, 可进行无电流的连续传输, 通常称为H1. (3) IEC1158-2技术用于PROFIBUS-PA, 其传输以下列原理为依据:①.每段只有一个电源作为供电装置. ②.当站收发信息时, 不向总线供电. ③.每站现场设备所消耗的为常量稳态基本电流. ④.现场设备其作用如同无源的电流吸收装置. ⑤.主总线两端起无源终端线作用. ⑥.允许使用线性.树型和星型网络. ⑦.为提高可靠性, 设计时可采纳冗余的总线段. ⑧.为了调制的目的, 假设每个部线站至少需用10mA基本电流才华使设备启动.通信信号的发生是通过发送设备的调制, 从±9mA到基本电流之间. (4) IEC1158-2传输技术特性:①.数据传输:数字式.位同步.曼彻斯特编码. ②.传输速率:31.25K bit /s, 电压式. ③.数据可靠性:前同步信号,采纳起始和终止限定符防止误差. ④.电缆:双绞线, 屏蔽式或非屏蔽式. ⑤.远程电源供电:可选附件, 通过数据线. ⑥.防爆型:能进行本征及非本征平安把持. ⑦.拓扑:线型或树型, 或两者相结合. ⑧.站数:每段最多32个, 总数最多为126个. ⑨.中继器:最多可扩展至4台. 4.IEC1158传输设备装置要点(1)分段藕合器将IEC1158-2传输技术总线段与RS-485传输技术总线段连接.藕合器使RS-485信号与IEC1158-2信号相适配.它们为现场设备的远程电源供电, 供电装置可限制IEC1158-2总线的电流和电压. (2)PROFIBUS-PA的网络拓扑有树型和线型结构, 或是两种拓扑的混合. (3)现场配电箱仍继续用来连接现场设备并放置总线终端电阻器.采纳树型结构时连在现场线分段的全部现场设备都并联地接在现场配电箱上. (4)建议使用下列参考电缆, 也可使用更粗截面导体的其它电缆. ①.电缆设计:双绞线屏蔽电缆②.导线面积(额定值):0.8mm2(AWG18) ③.回路电阻(直流):44Ω/Km ④.阻抗(31.25千赫时):100Ω±20%⑤.39千赫时衰减:3dB/Km ⑥.电容不服衡度:2nF/Km (5)主总线电缆的两端各有一个无源终端器, 内有串连的RC元件, R=100Ω, C=1цF.当总线站极性反向连接时, 它对总线的功能不会有任何影响. (6)连接到一个段上的站数目最多是32个.如果使用本征平安型及总线供电, 站的数量将进一步受到限制.即使不需要本征平安性, 远程供电装置电源也要受到限制. (7)线路最长长度简直定, 根据经验先计算一下电流的需要, 根据以下参数(2-2)选用一种供电电源单位, 再根据以下参数中(2-3)线的长度确定选用哪种电缆. (2-2):标准供电装置(把持值)型号应用领域供电电压供电最年夜电流最年夜功率典范站数Ⅰ EEx ia/ibⅡC 13.5V 110mA 1.8W 8 ⅡEEx ia/IbⅡC 13.5V 110mA 1.8W 8 ⅢEEx ia/IbⅡ B 13.5V 250mA 4.2W 22 Ⅳ不具有本征平安24V 500mA 12W 32 (备注:假设每个设备耗电10mA.)(2-3):IEC1158-2传输设备的线路长度供电装置Ⅰ型Ⅱ型Ⅲ型Ⅳ型Ⅴ型Ⅵ型供电电压(V) 13.5 13.5 13.5 242424Σ所需电流(mA)≤110 ≤110 ≤250 ≤110 ≤250 ≤500Q=0.8mm2的导线长度(m)≤900 ≤900 ≤400 ≤1900 ≤1300 ≤650Q=1.5mm2的导线长度(m)≤1000 ≤1500 ≤500 ≤1900 ≤1900 ≤1900(8)外接电源:如果外接电源设备, 根据EN500200标准带有适当的隔离装置, 将总线供电设备与外接电源设备连在本征平安总线上是允许的. 5.光纤传输技术(1)PROFIBUS系统在电磁干扰很年夜的环境下应用时, 可使用光纤导体,以增加高速传输的距离. (2)可使用两种光纤导体, 一是价格昂贵的塑料纤维导体, 供距离小于50米情况下使用, 另一种是玻璃纤维导体, 供距离小于1公里米情况下使用. (3)许多厂商提供专用总线插头可将RS-485信号转换成导体信号或将光纤导体信号转成RS-485信号.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)S(i)为村庄i到原点的距离。
w(i,j)=min{k|Sum{|S(k)-S(p)|}(i=p=j)}(i=k=j)找到[i,j]间最好的一个邮局点。
不过可以发现Sum{|S(k)-S(p)|是单调的,所以取中位数就可以了。
即上式中k的取值范围只有floor((i+j)/2),ceil((i+j)/2)两个。
Floor是下取整。
Ceil是上取整。
这样每次转移时间降到O(1)。
注意到是区间连续的,即(p,i-1)和(i,j)中的i-1,i是连续的,所以空间可以降维:f(i,j)表示放前i个邮局到前j个村庄的最优值。
f(i,j)=min{f(i-1,p-1)+w(p,j)}(i-1=p=j-1}e(i,j)为当f(i,j)到达最优值时的p.通过证明四边形不等式,得到e(i,j)=e(i,j+1)=e(i+1,j+1)决策数量又少了一个数量级。
1.3.坐标动态规划共性总结之后的一些问题,状态是由坐标维与其他的维组成。
本类与划分问题(是2维或多维的坐标系的划分)与路径问题的交集占本类问题中大多数。
题库a)棋盘分割(NOI99 4)主要是将公式变形,变形后的公式很容易看出方程。
状态是由2个坐标组成的4元组(x1,y1)(x2,y2),表示一个子棋盘。
这有点像之前的区间动态规划,只不过是将1维转2维。
后见路径问题。
1.4.数轴动态规划共性总结题库a)01背包应用:装箱问题(NOIP01 Trade 4)就是原题。
值币分割可利用方程的性质,空间降1维。
币值可重复的值币分割(pku1742,Problem FLouTianCheng's Contest in POJ)使用左右法在定位上加速。
另给状态加一个属性last,记录上一次剩下的可用的同币值硬币数(利用了当前转移是唯一前驱的特点)。
b)取火柴问题(sgu153 Playing with matches)c)Stone Pile(ural1005 Stone Pile)d)公路巡逻(CTSC2000)1.5.5.树型动态规划共性总结1)动态规划的顺序一般按照后序遍历的顺序,即处理完儿子再处理当前节点,才符合树的子结构的性质。
2)多叉树转换为二叉树由于要分配附加维到各个节点,而分配附加维是个划分问题,若还是按当前节点到各个儿子节点分配,则成了一个整数划分问题,O(n2)。
所以要把多叉树转换为二叉树,这样才能按动态规划的方式只决策当前点的分配问题,O(n)。
3)加当前点的选或不选的常数维加此维解决的是后效性问题。
…4)在将边信息转成树时的技巧将读入的边分裂成2条边,将这2条边关联起来(就是找到一条边,另一条边的编号就知道)。
用前向星表示法表示边(按起点有序),以后用边的时候,用了一条边打不可用标志,也将关联边打不可用标志。
这样可以保证O(n)的时间完成信息处理,而且在父节点找儿子的过程中带来很大的方便。
5)复杂度树型动态规划复杂度基本上是O(n);若有附加维m,则是O(nm)。
题库a)选课(CTSC97-3)由于要分配课程数,所以要多叉树转换为二叉树。
b)贪吃的九头龙(NOI02-3)若小头数大于1的话,则让不同的小头吃一段树枝的2个端点。
这样就把问题转化成:附加维是大头吃的个数,当前点由不由大头吃的常数维的动态规划。
由于涉及划分问题,所以要多叉树转换为二叉树。
c)求树的质心(sgu134 Centroid)给出一棵边不带权的树,求点,使得去掉此点后,剩下的最大的连通子图的顶点数最小.d)求树中的点最远距离最近。
给出一棵边带权的树,求树中的点,使得此点到树中的其他结点的最远距离最近。
Computer Network(sgu149)Computer Net(ural1056)1.6.集合动态规划(状态压缩)共性总结1)数据特殊性给出的数据在某一个或几个维度上一般具有比较小的范围(可以枚举一类的状态)。
一个枚举的状态是一个集合。
2)编码由于集合中元素个数的不定性或范围大,直接开数组存,不好索引数组(编程复杂度太高),所以要将集合编码。
利用数据的可枚举性,将枚举的状态(集合)编码。
一般来说码值的范围要很小(尽量排除无用的码值,如炮兵:当前格和上格存在炮兵的情况是非法的,可以排除)。
规定编码的码值代表的意思,要尽量规定好维护的码值。
(如炮兵:当前格存在炮兵的用2,上格存在炮兵用1。
这样下一层的规划时,只要码值-1即可)。
有时候可以直接利用编码的顺序动态规划,因为这时编码已经是拓补有序。
如TSP问题当前已选点集合的状态的前驱的编码的值一定比当前的编码的值小。
3)状态压缩对有限阶段的放置情况,行走情况编码(其实质也是放置的集合或行走路线的集合),这样的编码,也有人谓之:"状态压缩"。
此类题以"炮兵阵地"为典型,进行扩展。
题库a)购物(IOI95-2)可将每种物品按5进制编码。
(5为每种物品数的上限)由于物品数的上限为5,比较小,也可直接开数组存。
b)Roger游戏任务一(CTSC98 Day2 4)一个正方体在一个方格内的状态只有24种,而且可以通过顶面和前面来表示,这样用3维的状态(x,y,p)就可以解决,p为1到24种状态中的一种。
c)TSP问题观察一下TSP的搜索过程:for(x in未选点)TSP(x)即当前路的最后一个节点为x,现在要选择下一个节点y,而y要在未选点的集合中。
若未选点或已选点的集合已确定,则后效性消除。
可以DP。
状态为令X为当前路的已选点的集合(含i),当前路的最后一个节点为i。
2元组(X,i)为经过已选点的集合X到节点i的最短长度。
将X编码即可。
注意:并没有因为动态规划将问题从NP类带到P类。
应用:DNA Laboratory(Problem B,TU-Darmstadt Programming Contest 2004)将每个串的交迭部分求出,就可以将问题专成TSP但要输出字典序最小的,则需要注意DP顺序。
有具体的报告。
d)炮兵阵地十分经典,详见报告。
应用:Another Chocolate Maniac(sgu132)类似炮兵的做法的最值,只不过是求最小值,麻烦点。
Hardwood floor(sgu131)类似炮兵的做法的统计Little Knights(sgu225)类似炮兵的做法的统计,数据量太大要const Little Kings(sgu223)类似炮兵的做法的统计Bugs公司(CEOI 2002)类似炮兵的做法的最值1.7.利用动态规划思想求最值,编号(循环变量)的迭代共性总结要利用上次的一些运算"剩下"的循环变量作当前循环的边界,主要在于找出一种决策顺序,使之成立。
题库a)奶牛浴场b)Communication System将数据有序化,从大到小枚举带宽,每次可利用上次处理的结果Min,来决策当前状态。
称作迭代,或就是一种动态规划。
(zju1409,Problem CTehran 2002 Iran Nationwide Internet Programming Contest)1.8.记忆化搜索题库a)Magic Trick(Problem G,TU-Darmstadt Programming Contest 2004)2.按转移方式分2.1.存在性递推1)01统计(CTSC99 1)2)卡特兰数circle(sgu130)3)鹰蛋2.2.求一系列的分割(合并)点(划分问题)2.2.1.决策的分割点有序共性总结a)有序性每次决策的点的编号是有序的,即要按决策的顺序输出分割点的编号的话,编号是有序的,满足分割点的编号按升序排列。
b)方程一般形式f(n,m)=optimize{f(k,m-1)+w(k+1,n)}(n,m)表示从1到n个点中划分为m个部分的最优值;k为决策的分割点,即第m个部分为k+1到n;这里optimize可以为max,min。
题库a)整数划分常应用在将一个权分配给一定的小分割块,如:将大堆的石子分成一定的小堆,小堆可为空,大堆要分完。
有时应用在树型动态规划(二叉转多叉)中。
b)乘积最大(NOIP00 Advance 2)就是按上面的一般式的方程做。
2.2.2.决策的分割点无序共性总结a)无序性每次决策的点的编号是无序的,即要按决策的递归顺序输出分割点的编号的话,编号是无序的。
b)方程一般形式f(i,j)=optimize{f(i,k-1)+f(k+1,j)}+w(i,j)(i,j)表示从i到j的范围内选取一个分割点k的最优值,子问题是分割点左边(i,k-1)和右边(k+1,j)的点的范围的最优值;这里optimize可以为max,min。