摘要: 【思路】建立一个小堆和一个大堆。大堆用来存放第1..index-1大的数,其余数存放在大堆,小堆的堆顶元素便是我们要求出的第index大的数。每次插入一个A(n),必须保证大堆中数字数目不变,故先插入小堆中。若此时小堆堆顶小于大堆堆顶,则交换堆顶元素;每次Get(),输出小堆的堆顶元素,并将它并入大... 阅读全文
posted @ 2015-07-16 10:19 iiyiyi 阅读(637) 评论(0) 推荐(0) 编辑
摘要: 思路详见之前的贪心专题,用优先队列来代替之前的插入排序,效率为O(nlogn) 1 #include 2 #include 3 #include 4 using namespace std; 5 const int MAXN=20000+5; 6 int l[MAXN]; 7 8 int main... 阅读全文
posted @ 2015-07-14 11:20 iiyiyi 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 解题方法详见《挑战程序设计竞赛(第二版)》P74-75。注意首先要对加油站以位置为关键字快排,不要遗忘把终点视作一个加油量为0的加油站,否则最终只能到达终点前的加油站。 1 /*优先队列*/ 2 #include 3 #include 4 #include 5 #include 6 using n... 阅读全文
posted @ 2015-07-14 10:19 iiyiyi 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 优先队列能够完成以下操作:♣插入一个数值♣按照某种条件获得数值,并且删除(如最大值,最小值)二叉堆的结构:儿子的值一定不小于父亲的值,数的节点按从上到下,从左到右紧密排列。二叉堆的操作:♣插入:在堆的末位插入该数值,不断向上交换,直至当前位置的父亲节点小于等于该数值♣删除:把堆中的最小值(根的位置)... 阅读全文
posted @ 2015-07-14 08:55 iiyiyi 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 非常经典的划分数问题,即相当于把m个物体分成至多n组,求出分组总数。【思路】当前状态dp[i][j]表示将i个物体分成至多j组的分组总数。对于当前状态,有以下两种情形:(1)j组中有组为空,则这种情况下分组总数相当于将i个物体分成至多j-1组。即dp[i][j-1]。(2)j组中没有组为空,则每一组... 阅读全文
posted @ 2015-07-11 11:36 iiyiyi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: POJ2533裸的LIS,时间复杂度为O(n^2) 1 #include 2 #include 3 using namespace std; 4 const int MAXN=1000+5; 5 int a[MAXN]; 6 int dp[MAXN]; 7 int n,ans; 8 9 int m... 阅读全文
posted @ 2015-07-11 10:54 iiyiyi 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 深搜部分和之前的POJ2362差不多,只是有几处需要额外的剪枝。【思路】排序后从最短木棒开始搜索至木棒长总和,如果木棒长总和sum能整除当前棒长,则进入深搜。【剪枝】先前POJ2362的剪枝部分不再重提,这里只讲额外的几处(我们称切断后的棒为木棒,切断前的棒为原棒):1.如果所有木棒等长,即排序后s... 阅读全文
posted @ 2015-07-06 15:16 iiyiyi 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 从昨天晚上写到现在,一直在TLE,现在终于剪枝完成了_(:зゝ∠)_【思路】深搜:用这类型组合题目最基本的深搜,变量side记录当成已经组成了几条变,sl表示当前在组合的边已经有的长度。如果当前stick的长度与已有长度的和恰巧等于边长,则side+1,将sl清零;否则若小于边长,则sl+当前长度继... 阅读全文
posted @ 2015-07-04 11:55 iiyiyi 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 整个题库的第二题,原本都没有屑于去做,突发奇想抱着秒杀的心态去写了代码,却硬生生地吃了4个WA..【思路】先去除掉小数点,进行最基本的高精度乘法运算,再在运算得到的结果中添加小数点输出。【前铺】让我们先来看一看数组究竟需要设多大?数据范围是最大为99.999,则近似为100.000,当n=25时,至... 阅读全文
posted @ 2015-07-03 20:37 iiyiyi 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 一、求两个高精度正数的和差积 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int MAXN=1000; 7 char s1[MAXN],s2[MAXN]; 8 int ed1,e... 阅读全文
posted @ 2015-07-02 20:55 iiyiyi 阅读(300) 评论(0) 推荐(0) 编辑