- 博客(71)
- 资源 (28)
- 收藏
- 关注
原创 *hdu 1876 机器人系列2
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=18762.分析这题让人很抓狂……交了不知道多少次才过从前往后找,类似dp 的方法拓展出到达每个位置正好没有能量到的最大补充能量次数和方法数,最后再统计1: int 是显然会超的……2:给的能量会为 0 ,如果能量在终点处为 0 ,那么要特别讨论一下……3:一定要判断你找到的
2013-11-30 20:31:27
779
原创 hdu 2125 Local area network
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21252.分析类似二维阶梯的问题,只不过需要处理缺陷点的问题;注意缺陷点的横纵坐标的标识,不能想当然的自己感觉;动态规划所使用的决策:左边和下边的数值之和;3.复杂度空间复杂度O(MN);时间复杂度O(MN);4.涉及内容算法:动态规划5.感想类似二维阶梯的问题
2013-11-30 20:26:19
1069
原创 hdu 2159 FATE
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21592.分析类似于阶梯问题,只不过是二维的;约束条件为:杀怪数量和忍耐度,存储的值为经验值;动态规划中使用的决策:在处理第i类怪的时候,通过决定杀本种类怪的个数来找决策(和hdu 3033代码结构相似)3.复杂度时间复杂度O(NMKS),空间复杂度O(MS)4.涉及内容
2013-11-30 20:19:08
771
原创 hdu 3496 Watch The Movie
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=34962.分析取到的是最优值,而且最优值没有限制可以使用01背包的思路来写状态转移方程,感觉.和HDU 2660相似。3.复杂度空间复杂度O(MNL);时间复杂度O(MNL);4.涉及内容算法:动态规划5.感想因为题目要求是取得最大时间限制为L的要求下的最大值(即不
2013-11-30 17:28:33
698
原创 单调栈
1.作用单调栈解决的是以某个值为最小(最大)值的最大区间2.实现原理求最小值(最大值)的最大区间,维护一个不存在相等条件的严格递增(严格递减)的栈,当遇到一个比栈顶小(大)的值的时候开始弹栈,弹栈停止的位置到这个值的区间即为此值左边的最大区间;同时,当一个值被弹掉的时候也就意味着比它更小(更大)的值来了,也可以在弹出的过程中计算被弹掉的值得右边的最大区间。3.复杂度貌似O(N)
2013-10-31 14:56:21
618
原创 hdu 2963 Bone Collector II
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=26392.分析3.复杂度虽然和普通01背包不同,但是由于附加值是常数,因此时间和空间复杂度不变;时间复杂度O(VN);空间复杂度O(V);4.涉及内容动态规划5.感想把《背包九讲》上的经典题目好好做做。对于其他方面DP、数据结构等也是如此、6.代码#
2013-10-01 19:45:05
600
原创 hdu 2602 Bone Collector
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=26022.分析简单的01背包问题,目标是求最大值,数组初始化为03.复杂度时间复杂度O(VN);空间复杂度O(V);4.涉及内容动态规划5.感想把《背包九讲》上的经典题目好好做做。对于其他方面DP、数据结构等也是如此、6.代码#include usin
2013-10-01 11:25:29
625
原创 hdu 1160 FatMouse's Speed
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=11602.分析由于本题目是在[1,i-1]中寻找与第i个的兼容序列,因此每次都需要便利一下前i-1个值,依然类似阶梯问题。决策:当处理j的时候,前边共有j-1个决策,找相容的,记录最大值亮点:用前驱数组记录最长的链,然后递归实现正序输出,妙~~~3.复杂度时间复杂度O(
2013-10-01 11:18:04
690
原创 hdu 1723 Distribute Message
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=17232.分析类似于阶梯问题,只不过此处,当处理i的时候,决策前i-1个,即为min(M,i)3.复杂度时间复杂度O(N^2);空间复杂度O(N);4.涉及内容动态规划5.感想本道题让我想起了对于求单调递增子序列(LIS)中的O(NLogN)的优化思路:在积累的索引
2013-10-01 11:02:52
606
原创 hdu 1506 Largest Rectangle in a Histogram
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=15062.分析通过本题我认识了一个新的数据结构---“单调栈”。通过单调栈,可以快速求出以当前元素为最小(大)值的区间,这样用最小(大)值乘以区间长度即可。3.复杂度O(N)4.涉及内容数据结构:单调栈5.感想单调栈解决的是以某个值为最小(最大)值的最大区间,实现方
2013-10-01 10:32:26
634
原创 hdu 1260 Tickets
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=12602.分析简答DP,类似于走阶梯(走一步还是两步到达终点)的问题,状态转移方为:f[i]=min(f[i-1]+t1[i],f[i-2]+t2[i]);决策是:前一个、前两个算出秒数之后利用时间函数转换成具体的时分秒输出即可,3.复杂度4.涉及内容动态规划5
2013-10-01 09:50:12
692
原创 hdu 1059 Dividing
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=10592.分析1.本题要求平分物品,所以资源上限应该为总价值的一半,因此当资源限制为奇数的时候无法平分,应该去掉;2.为了要达到价值的一半而进行物品的选择,可以按照01背包的思路针对每类物品的每一个商品进行01背包,记录中间产生的值和资源限制进行比较;但是,01背包速度较慢,没有优化,
2013-10-01 09:44:06
556
原创 hdu 1114 Piggy-Bank
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=11142.分析题目要求是装满,即在本价值限制LimitValue下减去本物品价值Value之后的LimitValue`必须存在一个已经计算出来的值。(如果采用初始化的值的话,就变成背包不要求装满,慢慢理解)。 因此,和完全背包的思路相似,则初始化的时候,要么初始化为整形最大值,计算的时候用
2013-10-01 09:21:13
694
原创 《二分查找,你真的会吗?》---代码八问
1.网友代码二分查找或其扩展的问题及对应程序,内容如下:1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -13)二分查找返回key(可能有重复)最后一次出现的下标,如无return -14)二分查找返回刚好小于key的元素下标,如无return -15)二分查找返回刚好大于key的
2013-09-12 11:43:11
758
原创 hdu 1712 ACboy needs your help
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=17122.分析状态转移方程:f[i][j]=max(f[i][j],f[i-1][j-k]+t[k]);前i门课消耗的j天时间获得的价值决策:本门课程消耗了k([0,j])天,然后再上一门课程的j-k天开始计算价值可以和hdu2670作为对比,和书上的最优编码问题类似,为了满足最有子结构和
2013-08-29 21:13:37
593
原创 hdu 2167 Pebbles
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21672.分析这是我做的第一道状态压缩的问题,自己的感想为:1).需要找到压缩状态的方法,并表示出合理的状态;2).根据状态的标识,找出每个状态的兼容状态,从而找到到达本状态的决策(即兼容状态);3).对于第一个状态的处理比较重要,因为会影响到后面的处理;4).状态压缩的处理方法:逐行(本
2013-08-29 20:58:04
618
原创 hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
题目http://acm.hdu.edu.cn/showproblem.php?pid=2191分析原本是一个多重背包的问题,不过感觉数据量比较小,然后就用01背包的思路模拟多重背包,竟然也过了复杂度O(VN),V为所有补品和,N为所有物品个数涉及内容动态规划感想有时候可以尝试用简单的方法的组合来解决复杂的问题代码#include using
2013-08-29 18:54:08
688
原创 KMP算法
作用用于字符串匹配,是一种改进的方法原理KMP算法的关键是根据给定的模式串Pattern,定义一个next数组。next数组包含了模式串本身局部匹配的信息,即保存中间子字符串从字符串开头匹配的最长公共前缀信息。操作过程假设在模式匹配的进程中,执行S[i]和P[j]的匹配检查。若S[i]=P[j],则继续检查S[i+1]和P[j+1]是否匹配。若S[i]即执行j=next[j]操
2013-08-28 14:45:40
606
原创 hdu 1081 To The Max
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=10812.分析最大矩形的经典问题,不过需要注意的是其中还有负数,所以初始化的时候要初始化为最小值,或者初始化为当全部都为负值仍然不会达到的值。使用的决策:在确定行之后,在列方向上按照最大字段和求解行:1列:用数组b[]存储,然后在[i,j]上不断累积3.复杂度双
2013-07-09 17:18:42
542
原创 hdu 1978 How many ways
题目http://acm.hdu.edu.cn/showproblem.php?pid=1978分析每一次状态转移的决策数目为该格子能量的值,横纵坐标减去当前格子坐标差的和只要小于格子能量的就都可以到达复杂度空间复杂度O(M*N);时间复杂度O(M*N*E^2)涉及内容算法:动态规划感想简单DP,只不过需要特殊考虑的地方为:从当前节点能到达的所有目标节点
2013-07-09 16:58:33
622
原创 hud 2151 Worm
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21512.分析题目给出初始位置P,然后每分钟都从上一次能到达的位置开始向左右两边扩展,同时记录转移的方案书,这是典型的直接模拟的思路。此时对于动态规划思想的运行指示限定在存储了上一分钟的中间结果。动态规划使用的决策为:相邻果树的数值之和,按照时间顺序和位置考虑最优子结构和重叠子问题
2013-07-09 16:51:32
536
原创 hud 2473 Junk-Mail Filter
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=24732.分析并查集删除点的做法:不是真正删除,而是将所有节点全部处理成非根节点,这样在做删除操作的时候,只用换一下根节点即表示删除了根节点。如果在[0,N]中选择根节点,则不可避免的需要处理两种情况:删除非根节点;删除根节点;程序中如果直接建图添加这两种操作,则会导致TLE,因为数据
2013-06-27 10:25:14
678
原创 Dijstra算法---普通版、优先队列优化版、堆优化版
假如你有一张地图,地图上给出了每一对相邻城市的距离,从一个地点到另外一个地点,如何找到一条最短的路?最短路算法要解决的就是这类问题。定义:给定一个有(无)向图,每一条边有一个权值 w,给定一个起始点 S 和终止点 T ,求从 S 出发走到 T 的权值最小路径,即为最短路径。最短路算法依赖一种性质:一条两顶点间的最短路径包含路径上其他最短路径。简单的说就是:最短路径的子路径是最短路径。这个用反证法很
2013-06-12 17:42:59
1675
原创 hud 1811 Rank of Tetris
题目http://acm.hdu.edu.cn/showproblem.php?pid=1811分析思路不是自己的,这次纯粹当时学习了。是一道拓扑排序题, 但是因为多了个等号,所以增加了点难度,这题的关键也在于怎样处理这个等号。相等的那些数,其实都是同一个数,所以需要先进行预处理,把所有相同的那些数,只用其中的一个来代表,所以,可以用并查集来把相同的数并成一颗树,之后都是用这个
2013-06-08 17:30:39
632
原创 hud 1829 A Bug's Life
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=18292.分析第一、题目大意:就是检查一堆数据中是否有同性恋,找出主要矛盾是如果1喜欢2,2喜欢3,而1又喜欢3,则矛盾,即找出出现类的的矛盾。第二、通过记录本节点到根节点的步长推断和根节点性别的关系:距离根节点步长为奇数表明和根节点性别相反;距离根节点步长为偶数表明和根节点性别相同;
2013-06-03 14:41:58
574
原创 hdu 1232 畅通工程
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=12322.分析简单的并查集题目。将每一条道路的关系按照:(小,大)的关系处理,然后将M条道路按照所给关系建立并查集集合,最后并查集中集合数目-1就是需要添加的道路个数;3.复杂度空间复杂度为O(N),建立一个集合的时间复杂度为O(1),N次合并M次查找的时间复杂度为O(MAlp
2013-06-03 14:30:07
552
原创 hdu 2391 Filthy Rich
题目http://acm.hdu.edu.cn/showproblem.php?pid=2391分析类似于阶梯问题,简单的dp决策:f[i][j]=max(f[i-1][j-1],f[i-1][j],f[i][j-1]);复杂度O(R*C)涉及内容算法:动态规划感想有些题目就是从经典题目改编过来,就算不是,他的解法也和经典题目的类似代码#
2013-05-27 14:43:39
696
原创 hdu 1069 Monkey and Banana
题目http://acm.hdu.edu.cn/showproblem.php?pid=1069分析和hdu 1025类似,区别在于本题需要能够识别出来每个矩形,相邻的三个面都要存储(这样才能找到所有合理的组合情况),所以数组中元素个数为矩形个数的3倍。决策:当处理第i个的时候,决策为前边i-1个,依次遍历找到最大值(即相容的个数中最大的)复杂度O(N*N)
2013-05-27 14:36:29
672
原创 hdu 4223 Dynamic Programming?
题目http://acm.hdu.edu.cn/showproblem.php?pid=4223分析这个没有什么好的思路,就是按照题目要求一段一段的,把每种可能都计算了(即,在每一个起点的位置上按照步长进行分段来求值),然后求最小值,步长取值范围[1,N-1]。复杂度O(N*N)涉及内容算法:动态规划感想如果没有什么好的思路,就用普通思路先做出来,然后在
2013-05-27 14:25:18
617
原创 hdu 1059 Dividing
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=10592.分析1.本题要求评分物品,所以资源上限应该为总价值的一半;2.为了要达到价值的一半而进行物品的选择,可以按照01背包的思路针对每类物品的每一个商品进行01背包,记录中间产生的值并与资源限制进行比较,则题目可解;3.但是01背包速度较慢,没有优化,详见《背包九讲》。
2013-05-10 11:30:53
469
原创 win7系统下安装ubuntu双系统教程
第一步、准备工作(在win7下操作完成)1.下载镜像文件Ubuntu 64位(乌班图系统) v12.04.1 官方原版iso镜像 http://www.33lc.com/soft/18055.html Ubuntu(乌班图系统) v12.04.1 官方原版iso镜像 http://www.33lc.com/soft/18053.html2.下载并安装easybcd。
2013-04-25 20:22:33
1012
原创 hdu 1171 Big Event in HDU
题目http://acm.hdu.edu.cn/showproblem.php?pid=1171分析首先分析题目之后给我的第一感觉就是一个多重背包的问题,我首先用多重背包的思路写了一个提交TLE,然后我想当然的意识到可能需要单调队列优化将时间复杂度降到O(NV)。然后,我用单调队列优化又写了一个提交之后发现仍然TLE,这下我就郁闷了一下午加上晚上两个小时,在网上找了一个正确的经行比
2013-04-18 20:33:37
580
原创 算法解析之感想---单调队列优化多重背包思路
多重背包问题朴素时间复杂度为O(NMS)(这里S是所有物品的数量s之和),经过二进制优化后时间复杂度为O(NMlog2S),这个复杂度已经能够应付大多数题了,但对于某些特别卡时间的题(比如N*M=10的7次方),仍然会TLE。这时,可以用单调队列优化,时间复杂度降为O(NM)。其优化思路是将当前重量限制取余物品重量数得到余数相同的归为一类,因此可以分为[0,V[i]-1]供V[i]类,其中对于每一
2013-04-18 20:23:02
1184
原创 hud 3415 Max Sum of Max-K-sub-sequence
题目http://acm.hdu.edu.cn/showproblem.php?pid=3415分析做的时候要注意由于首尾相连,所以我们就扩出一倍的空间来简化这个过程。最朴素的做法,在处理第i个元素的时候,将以i开始的长度为1...K的所有情况算一遍然后和以前存储的结果比较,保存中间结果,此时时间复杂度为O(N*K),很显然会超时,需要另想办法优化。考虑到最朴素的做法中可以使用
2013-04-15 16:41:51
633
原创 hud 1025 Constructing Roads In JGShining's Kingdom
题目http://acm.hdu.edu.cn/showproblem.php?pid=1025分析本题要求求出互不交叉的能够相容的最多的道路,想到这里觉得必须对所有的道路按照一定的规则进行排序(此处为经验,多练习即可)。在题目给出的n条道路有序之后,但询问与第j条道路相容的所以道路的时候,根据动态规划的最有子结构和重叠子问题性质,只用考虑前边j-1个与j的相容情况。因此,为了求出
2013-04-10 16:29:43
606
原创 算法解析之感想---动态规划算法的初始化和转移
最近一直在做动态规划算法的专题训练,做了二十道题颇有感想,写出来和大家分享一下,欢迎广大ACMer,OIer,IOIer来交流~~~ 对于动态规划各种算法书中提到的最多的一半就是分析阶段、找状态、写状态转移方程。的确这些能够证明对于一个问题,你的解题思路是否正确,但是如果要想能够完全解决一道动态规划问题,除了这些之外我感觉就是对于数据的初始化了,这就有些像”高考时父母说的不要输在起跑线上
2013-04-05 16:24:19
1676
原创 hdu 2639 Bone Collector II
题目 http://acm.hdu.edu.cn/showproblem.php?pid=2639分析 求01背包计算过程中产生的所有可能值从大到小排序后的第K大值(即包含所有不满足条件,但是能够计算出来的结果,当时忽略此条件卡了许久),本题普通解决思路为:用一个数组或者栈记录01背包过程中所有可能产生的值,然后排序,去重复,在求第K大的值(这种方法就是”暴搜“,参考
2013-04-05 09:23:27
568
原创 hdu 3033 I love sneakers!
题目 http://acm.hdu.edu.cn/showproblem.php?pid=3033分析 这题一看就是带分组的01背包问题,而且题目限制每组至少取1个,而不是最多1个,不符合分组背包至多取一个的思路,但是感觉可以从分组背包的解题代码框架中修改过来。《背包九讲》中分组背包框架:for 所有的组k forv=V..0
2013-04-04 22:44:43
571
原创 win7系统下用vspd软件进行串口编程实例
目前,我在学习C#串口编程类的基础知识,在网上也找了一些资料,但都存在一些问题,现在他们基础上再进行一定的修改,且更详细的表达如何实现串口编程,实现串口的发送与接收。本文通过一个完整的实例,目的在于说明在win7系统中进行串口编程时: 1. 用C#编程串口的属性定义、成员变量以及方法等问题; 2. 掌握串口的发送与接收,利用虚拟串口来进行通讯,体验串口通讯;
2012-12-15 20:55:56
3142
原创 树状数组解析
1.名称树状数组2.作用主要用来求解数列的前缀和,例如:sum[n]=a[0]+a[1]+...+a[n]。同时能够快速求任意区间的和,例如:设sum(k) = A[1]+A[2]+…+A[k],则A[i] + A[i+1] + … + A[j] = sum(j)-sum(i-1)。由此引申出三类比较常见问题:1、单点更新,区间求值-----插点问线。(HDU1166)
2012-12-07 13:59:09
509
UNIX 网络编程(第2卷:进程间通信).pdf
2013-08-21
UNIX 网络编程(第1卷:套接口 API 和 X-Open 传输接口 API).pdf
2013-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人