C++
qiusuo800
这个作者很懒,什么都没留下…
展开
-
模板体会
1.模板在vs编译器中不能正常使用,但在vc++6.0中可以正常运行! 2.模板和容器要配合使用!原创 2010-01-10 16:27:00 · 403 阅读 · 0 评论 -
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 · 552 阅读 · 0 评论 -
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 · 632 阅读 · 0 评论 -
hud 2473 Junk-Mail Filter
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=24732.分析并查集删除点的做法:不是真正删除,而是将所有节点全部处理成非根节点,这样在做删除操作的时候,只用换一下根节点即表示删除了根节点。如果在[0,N]中选择根节点,则不可避免的需要处理两种情况:删除非根节点;删除根节点;程序中如果直接建图添加这两种操作,则会导致TLE,因为数据原创 2013-06-27 10:25:14 · 687 阅读 · 0 评论 -
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 · 699 阅读 · 0 评论 -
hdu 2167 Pebbles
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21672.分析这是我做的第一道状态压缩的问题,自己的感想为:1).需要找到压缩状态的方法,并表示出合理的状态;2).根据状态的标识,找出每个状态的兼容状态,从而找到到达本状态的决策(即兼容状态);3).对于第一个状态的处理比较重要,因为会影响到后面的处理;4).状态压缩的处理方法:逐行(本原创 2013-08-29 20:58:04 · 631 阅读 · 0 评论 -
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 · 601 阅读 · 0 评论 -
hdu 1114 Piggy-Bank
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=11142.分析题目要求是装满,即在本价值限制LimitValue下减去本物品价值Value之后的LimitValue`必须存在一个已经计算出来的值。(如果采用初始化的值的话,就变成背包不要求装满,慢慢理解)。 因此,和完全背包的思路相似,则初始化的时候,要么初始化为整形最大值,计算的时候用原创 2013-10-01 09:21:13 · 702 阅读 · 0 评论 -
hdu 1059 Dividing
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=10592.分析1.本题要求平分物品,所以资源上限应该为总价值的一半,因此当资源限制为奇数的时候无法平分,应该去掉;2.为了要达到价值的一半而进行物品的选择,可以按照01背包的思路针对每类物品的每一个商品进行01背包,记录中间产生的值和资源限制进行比较;但是,01背包速度较慢,没有优化,原创 2013-10-01 09:44:06 · 568 阅读 · 0 评论 -
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 · 708 阅读 · 0 评论 -
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 · 700 阅读 · 0 评论 -
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 · 614 阅读 · 0 评论 -
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 · 611 阅读 · 0 评论 -
《二分查找,你真的会吗?》---代码八问
1.网友代码二分查找或其扩展的问题及对应程序,内容如下:1)二分查找元素key的下标,如无 return -12)二分查找返回key(可能有重复)第一次出现的下标,如无return -13)二分查找返回key(可能有重复)最后一次出现的下标,如无return -14)二分查找返回刚好小于key的元素下标,如无return -15)二分查找返回刚好大于key的原创 2013-09-12 11:43:11 · 770 阅读 · 0 评论 -
单调栈
1.作用单调栈解决的是以某个值为最小(最大)值的最大区间2.实现原理求最小值(最大值)的最大区间,维护一个不存在相等条件的严格递增(严格递减)的栈,当遇到一个比栈顶小(大)的值的时候开始弹栈,弹栈停止的位置到这个值的区间即为此值左边的最大区间;同时,当一个值被弹掉的时候也就意味着比它更小(更大)的值来了,也可以在弹出的过程中计算被弹掉的值得右边的最大区间。3.复杂度貌似O(N)原创 2013-10-31 14:56:21 · 632 阅读 · 0 评论 -
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 · 713 阅读 · 0 评论 -
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 · 781 阅读 · 0 评论 -
*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 · 792 阅读 · 0 评论 -
hud 2151 Worm
1.题目http://acm.hdu.edu.cn/showproblem.php?pid=21512.分析题目给出初始位置P,然后每分钟都从上一次能到达的位置开始向左右两边扩展,同时记录转移的方案书,这是典型的直接模拟的思路。此时对于动态规划思想的运行指示限定在存储了上一分钟的中间结果。动态规划使用的决策为:相邻果树的数值之和,按照时间顺序和位置考虑最优子结构和重叠子问题原创 2013-07-09 16:51:32 · 547 阅读 · 0 评论 -
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 · 562 阅读 · 0 评论 -
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin>> 用法转载 2010-05-03 18:16:00 · 365 阅读 · 0 评论 -
VS2005使用技巧!
将双手保持在键盘上我最喜欢使用的键盘快捷方式您可曾有过这样的期望:在 Visual Studio 内部进行开发工作时双手不必离开键盘?如果您是一名高级用户,您肯定会享受到使用键盘快捷方式执行各种操作所带给您的飞速体验。我确信大部分开发人员都已经熟悉了其中的某些快捷方式。使用 F5 执行 Debug.Start、F10 执行 Debug.StepOver、F4 执行 View转载 2010-05-07 11:43:00 · 909 阅读 · 0 评论 -
JRTPLIB库-------一个RTP协议的开源库
<br />JRTPLIB库是一个RTP协议的开源库,使用这套库文件,我们可以创建端到端的RTP连接,实现数据的实时传输。<br />RTP是实时传输协议的简称。<br />下载jrtplib-3.7.1.rar后,首先将其解压到一个临时文件夹中,然后开始后续工作。<br /><br />首先需要强调的是,jrtplib是一个库而不是应用程序,编译后我们获得的是.lib文件。这个文件是用来实现RTP协议的,意义和我们在写WIN32程序时用到的kernel.lib一样。<br /><br />1、解压后的文件原创 2011-05-10 11:12:00 · 1423 阅读 · 0 评论 -
老张喝茶 教你同步异步 阻塞与非阻塞
老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水转载 2012-10-03 11:27:51 · 362 阅读 · 0 评论 -
hdu 2639 Bone Collector II
题目 http://acm.hdu.edu.cn/showproblem.php?pid=2639分析 求01背包计算过程中产生的所有可能值从大到小排序后的第K大值(即包含所有不满足条件,但是能够计算出来的结果,当时忽略此条件卡了许久),本题普通解决思路为:用一个数组或者栈记录01背包过程中所有可能产生的值,然后排序,去重复,在求第K大的值(这种方法就是”暴搜“,参考原创 2013-04-05 09:23:27 · 577 阅读 · 0 评论 -
算法解析之感想---动态规划算法的初始化和转移
最近一直在做动态规划算法的专题训练,做了二十道题颇有感想,写出来和大家分享一下,欢迎广大ACMer,OIer,IOIer来交流~~~ 对于动态规划各种算法书中提到的最多的一半就是分析阶段、找状态、写状态转移方程。的确这些能够证明对于一个问题,你的解题思路是否正确,但是如果要想能够完全解决一道动态规划问题,除了这些之外我感觉就是对于数据的初始化了,这就有些像”高考时父母说的不要输在起跑线上原创 2013-04-05 16:24:19 · 1719 阅读 · 0 评论 -
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 · 616 阅读 · 0 评论 -
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 · 646 阅读 · 0 评论 -
算法解析之感想---单调队列优化多重背包思路
多重背包问题朴素时间复杂度为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 · 1190 阅读 · 0 评论 -
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 · 592 阅读 · 0 评论 -
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 · 481 阅读 · 0 评论 -
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 · 681 阅读 · 0 评论 -
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 · 704 阅读 · 0 评论 -
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 · 631 阅读 · 0 评论 -
hud 1811 Rank of Tetris
题目http://acm.hdu.edu.cn/showproblem.php?pid=1811分析思路不是自己的,这次纯粹当时学习了。是一道拓扑排序题, 但是因为多了个等号,所以增加了点难度,这题的关键也在于怎样处理这个等号。相等的那些数,其实都是同一个数,所以需要先进行预处理,把所有相同的那些数,只用其中的一个来代表,所以,可以用并查集来把相同的数并成一颗树,之后都是用这个原创 2013-06-08 17:30:39 · 646 阅读 · 0 评论 -
Dijstra算法---普通版、优先队列优化版、堆优化版
假如你有一张地图,地图上给出了每一对相邻城市的距离,从一个地点到另外一个地点,如何找到一条最短的路?最短路算法要解决的就是这类问题。定义:给定一个有(无)向图,每一条边有一个权值 w,给定一个起始点 S 和终止点 T ,求从 S 出发走到 T 的权值最小路径,即为最短路径。最短路算法依赖一种性质:一条两顶点间的最短路径包含路径上其他最短路径。简单的说就是:最短路径的子路径是最短路径。这个用反证法很原创 2013-06-12 17:42:59 · 1697 阅读 · 0 评论 -
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 · 585 阅读 · 0 评论 -
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 · 1092 阅读 · 0 评论