随笔分类 -  其它

摘要:其实还是经常写二分的,也知道二分查找有好多写法,然而一直没有总结一下。现单独开一篇备忘。我通常的二分写法是:int binarysearch(int *a, int n, int d) { int left = 0, right = n - 1; while (left d) { ... 阅读全文
posted @ 2015-10-17 02:06 moonbay 阅读(845) 评论(2) 推荐(0)
摘要:题目超简单,我写解题报告是因为我的代码用了些STL,使代码很简洁。* * Author : ben */#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文
posted @ 2015-03-27 01:51 moonbay 阅读(155) 评论(0) 推荐(0)
摘要:比较典型的应用优先队列的题。题目是在一个长为n的数组中,依次问m个数中的最小值。那么把值和下标做成一个结构体,放进优先队列里,每次移动窗口就把该T的T掉,剩下的最小值就是答案,复杂度nlogn,轻松ac。/* * Author : ben */#include #include #includ... 阅读全文
posted @ 2015-02-08 22:48 moonbay 阅读(168) 评论(0) 推荐(0)
摘要:思路挺简单的,但因为需要处理大数,所以就比较耗代码了。/* * Author : ben */#include #include #include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2015-02-08 00:52 moonbay 阅读(398) 评论(0) 推荐(0)
摘要:做解析器做得多的我,一上来就觉得要写解析器,麻烦,于是想偷懒用java的正则表达式类Pattern直接进行判断,结果wa了,原因是这题要求的正则表达式只是真正正则表达式的一个子集。比如|12是合法正则表达式,但是此题中属于不合法。还是把代码贴上吧:import java.util.Scanner;i... 阅读全文
posted @ 2015-02-07 19:25 moonbay 阅读(181) 评论(0) 推荐(0)
摘要:这也是2011年百度之星的一道题。这题我就是乱搞搞过的,打代码之前自己心里也没底,不知道能不能过的。我的做法很简单,就是按时间顺序依次构造能杀死的僵尸血量,找到第k小的。构造的方法也很暴力:对t时刻,第i个武器新构造出来的血量,就是用ai+t*bi依次去加之前时刻构造出来的血量。所以解题的关键就在于... 阅读全文
posted @ 2014-12-10 21:19 moonbay 阅读(262) 评论(0) 推荐(0)
摘要:这题公式不难推,就是控制精度的问题。因为公式是一些项求和,这里每一项都是接近于1的数,但是每一项里包含一个组合数和一个p^n,如果每次直接把p^n乘进去就会使数字太小,如果一直留到最后乘,可能中间就溢出了。解决的办法就是根据中间变量的大小动态地乘p^k,防止溢出,也防止数字太小丢精度离比赛结束已经有一段时间了,今天再来看这题,打算把它A掉,结果查了一下解题报告,发现这题其实有不需要控制精度的方法!!!唉,当时太SB了,这种方法居然都没想到,花了一两个小时去控制精度。其实只要在运算过程中全部取对数就可以了。。。。啊啊啊。。。/* * hdu4465/win.cpp * Created on: 2 阅读全文
posted @ 2012-11-12 16:42 moonbay 阅读(251) 评论(0) 推荐(0)
摘要:这题还是挺好的,想了好久才想出做法。做法的大体思想其实就是暴力删点,用了一个布尔数组(deleted)来记录在执行一个请求前某点是否已被删除(所以在点结构体中加了一个变量id以唯一标识一个点)。我是用了两个链表存了两份点(lx, ly),一份先按x再按y排序,另一份先按y再按x排序。然后用一个mapx存下lx中不同x值开始的位置。(同理得mapy)。对于一个删除x=d的请求,可以直接从mapx中读出x=d在链表中的起始位置,然后一个个地删,一边删一边记录在deleted数组中就可以了。同理可以处理y=d的情况。这题最让我记忆深刻的地方是我在打代码的时候有个地方犯了一个小错误死循环了没输出结果, 阅读全文
posted @ 2012-11-12 16:27 moonbay 阅读(187) 评论(0) 推荐(0)
摘要:用multiset就可以水过,不过我这种方法用int会WA,应该是测试数据中有int的最小值,如果用int保存再取负的话就会溢出,以后要注意~~/* * hdu2275/win.cpp * Created on: 2012-11-2 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include <iostream>#include <algorithm> 阅读全文
posted @ 2012-11-02 20:26 moonbay 阅读(172) 评论(0) 推荐(0)
摘要:这题还是挺不错的,第一个突破点就是n很大但是m很小,所以能组成的集合最多有2^14种的,枚举这每一种能否构成即可。刚开始的时候是用set存每一个数的,超时,略加改进,用位存储就过掉了。不过我还是算蹭过的,600多ms,应该还能继续用位运算优化。/* * hdu3306/win.cpp * Created on: 2012-10-27 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime> 阅读全文
posted @ 2012-10-27 14:23 moonbay 阅读(149) 评论(0) 推荐(0)
摘要:维护一个单调栈,如果当前的高度小于栈顶的,则弹栈,直到当前的高度大于栈顶,将当前的入栈。要注意高度为0的情况,开始忘考虑了,WA了一次。/* * hdu1008/win.cpp * Created on: 2012-7-24 * Author : ben */#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <ctime>#include <iostream>#include <algorithm>#inc 阅读全文
posted @ 2012-07-24 21:28 moonbay 阅读(228) 评论(0) 推荐(0)
摘要:转贴地址http://blog.csdn.net/ant_yan/article/details/5030389导言SUN官方发布的关于垃圾收集性能调整的文档,在不同JDK下有不同的版本,文档内容大同小异。本文档基于SUN 1.3.1版本调优文档创作,添加了关于1.4.2中可选垃圾收集器的内容。而是加入了我对于GC的一些思考,同时删除了原文档作者不合时宜的幽默。本文档前半部分内容由暴风尖塔独立完成,后半部分引用了原dev2dev版主伍昊献的翻译这里给出官方文档在不同版本之下的链接1.3.1 http://java.sun.com/docs/hotspot/gc/index.html1.4.2 阅读全文
posted @ 2012-03-07 12:12 moonbay 阅读(241) 评论(0) 推荐(0)