摘要: 有一个正整数序列,求最短的子序列使得其和大于等于S,并输出最短的长度。用数组b[i]存放序列的前i项和,所以b[i]是递增的。遍历终点j,然后在区间[0, j)里二分查找满足b[j]-b[i]≥S的最大的i,时间复杂度为O(nlongn)。这里二分查找用到库函数lower_bound() 1 //#... 阅读全文
posted @ 2014-08-02 22:25 AOQNRMGYXLMV 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 给出一些点的初始位置(x, y)及速度(a, b)和一个矩形框,求能同时出现在矩形框内部的点数的最大值。把每个点进出矩形的时刻分别看做一个事件,则每个点可能对应两个事件,进入事件和离开事件。按这些事件的发生时间进行排序,然后逐个扫描,遇到进入事件cnt++,遇到离开事件--cnt,用ans记录cnt... 阅读全文
posted @ 2014-08-02 21:16 AOQNRMGYXLMV 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码。这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会“追上”慢的那个。明显这里还是有重复计算的部分,但相对其他算法来说还是比较高效的吧,我猜。。6s的题居然只用了0... 阅读全文
posted @ 2014-08-02 17:28 AOQNRMGYXLMV 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 本题可以边读边计算,MaxAi用来维护已经读入的数据的最大值,然后每次读入一个num,就计算一次MaxAi-num,如果比ans更大,就更新ans。 1 //#define LOCAL 2 #include 3 #include 4 #include 5 using namespace std... 阅读全文
posted @ 2014-08-02 08:56 AOQNRMGYXLMV 阅读(139) 评论(0) 推荐(0) 编辑
摘要: n为偶数的时候比较简单,就是相邻两个守卫的礼物和的最大值。首先这是个下限,其次这个值也满足题目要求,所以这就是答案了。当n为奇数的时候上限是守卫索要礼物的最大值的三倍。这也很容易理解,比如n=5,ri都为1的时候,每个人拿到的礼物是1,2,1,2,3有了上限有了下限就可以二分找出答案来了。test函... 阅读全文
posted @ 2014-08-02 08:25 AOQNRMGYXLMV 阅读(443) 评论(0) 推荐(0) 编辑