摘要: 解题思路: 本题的优化目标是使最大连续子序列的和最小,并且在最大子序列和相同的情况下s1、s2...尽量小。那么我们可以从右边开始,尽量向左划分,当目前剩余书本数等于剩余的人数时,剩余每本书的分配策略只能是每人一本。 代码如下: 阅读全文
posted @ 2016-04-26 23:00 kiraa 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 本问题的关键在于set的动态更新,对set集合各种操作的熟练运用是关键。详细思路见紫书。 代码如下: 阅读全文
posted @ 2016-04-19 18:29 kiraa 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 经过分析可以发现,每个车横纵坐标的选取是相互独立的,因此可以分别考虑。那么问题可以简化成:将1~n 分别放入[xli,xri]n个区间中。选择的方法采用贪心法——以行为例,先将各个矩形区间按 xr 从小到大排序 [xl1,xr1][xl2,xr2]...[xln,xrn];依次选择每个区 阅读全文
posted @ 2016-04-13 01:24 kiraa 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 枚举并存储A+B的和,然后枚举C+D,搜索-C-D的个数,问题的关键是如何存储A+B的和。本题数据量不小,极限数据n=4000时,A+B的和有16,000,000个,数组显然开不下。那么不妨建立哈希表来存储。 代码如下: 阅读全文
posted @ 2016-04-12 15:12 kiraa 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 这是一道以快速幂计算为原理的题,实际上也属于求最短路径的题目类型。那么我们可以以当前求出的幂的集合为状态,采用IDA*方法即可求解。问题的关键在于如何剪枝效率更高。笔者采用的剪枝方法是: 1)如果当前状态幂集合中的最大元素max满足 max*2^(maxd-cur_d)<n,则剪枝。原因 阅读全文
posted @ 2016-04-01 21:26 kiraa 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 这是紫书上的一道题,一开始笔者按照书上的思路采用状态空间搜索,想了很多办法优化可是仍然超时,时间消耗大的原因是主要是: 1)状态转移代价很大,一次需要向八个方向寻找; 2)哈希表更新频繁; 3)采用广度优先搜索结点数越来越多,耗时过大; 经过简单计算,最长大概10次左右的变换就能出解,于 阅读全文
posted @ 2016-04-01 01:22 kiraa 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 12325 Zombie’s Treasure Chest Some brave warriors come to a lost village. They are very lucky and find a lot of treasures and a big treasure chest, bu 阅读全文
posted @ 2016-03-26 15:07 kiraa 阅读(228) 评论(0) 推荐(0) 编辑
摘要: Description Everyone knows what the Fibonacci sequence is. This sequence can be defined by the recurrence relation: F1 = 1, F2 = 2, Fi = Fi - 1 + Fi - 阅读全文
posted @ 2016-03-24 21:10 kiraa 阅读(264) 评论(0) 推荐(0) 编辑
摘要: Description Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. 阅读全文
posted @ 2016-03-23 21:10 kiraa 阅读(971) 评论(0) 推荐(0) 编辑
摘要: Description Input Output Sample Input Sample Output 解题思路: 首先我们考虑这个问题:给定两个序列A,B,和确定的数x,问是否存在i,j使满足A[i]+B[j]=x的?最快的方法是枚举A,然后在B中二分查找 x-A。现在回到这个问题,这道题给了三组 阅读全文
posted @ 2016-03-22 13:40 kiraa 阅读(303) 评论(0) 推荐(0) 编辑