这两道题都是用的尺取法。尺取法是《挑战程序设计竞赛》里讲的一种常用技巧。就是O(n)的扫一遍数组,扫完了答案也就出来了,这过程中要求问题具有这样的性质:头指针向前走(s++)以后,尾指针(t)要么不动要么也往前走。满足这种特点的就可以考虑尺取法。poj3061 比较简单,也可以用二分做,时间复杂度O...
分类:
其他好文 时间:
2014-09-25 02:11:38
阅读次数:
245
考虑poj3320尺取法的做法,与此题基本一样,但是此题的 位置 的范围到2^31 尺取法不可。将每种珠子所在的位置排序。每种珠子要维护一个指针,指到已经用到这个种类的哪个珠子。所以尺取法用堆优化,每次从堆中取出最小的,相当于尺取法的头指针向后移动。然后从每种珠子里向后取出一个位置(指针++)(已经...
分类:
其他好文 时间:
2014-09-13 17:02:25
阅读次数:
234
题目链接:http://poj.org/problem?id=3061先说说最朴素的算法,那就是for嵌套了,复杂度是O(n^3)太慢,想都不用想一定会超时。接下来有的人可能会想到二分搜索的思想,将时间复杂度优化成O(n*logn),我试了一下,可以AC。但是这都不是今天要说的重点,今天要说的是一个...
分类:
其他好文 时间:
2014-08-29 14:21:27
阅读次数:
228
A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 10000, and a positive integer S (S < 100 000 000) are given. Write a program to find the minimal length of the sub...
分类:
其他好文 时间:
2014-08-23 11:22:40
阅读次数:
198
Subsequence
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 8403
Accepted: 3264
Description
A sequence of N positive integers (10 < N < 100 000), each of...
分类:
其他好文 时间:
2014-07-24 10:27:40
阅读次数:
215
问题
方法的思想
The idea is to check elements in a way that’s reminiscent of movements of a caterpillar.
The caterpillar crawls through the array. We remember the front and back positions of the
caterp...
分类:
其他好文 时间:
2014-07-17 19:22:33
阅读次数:
322
就是两个指针表示区间[l,r]的开始与结束然后根据题目来将端点移动,是一种十分有效的做法。适合连续区间的问题3320这道意思是一本书有n页,每一页上有一个知识点标号a[i]可能重复,要求选择一个最小的区间使得能够覆盖所有知识点分析:[l,r]区间推进,统计区间中能够覆盖的知识点数,对于每一个l,r都...
分类:
其他好文 时间:
2014-07-07 22:09:14
阅读次数:
213