随笔分类 - 高效算法设计
摘要:题意:已知歌单中的歌曲数目s,和部分的播放历史,问下一首可能播放的歌曲种数。 分析: 1、按照歌单数目s,将播放历史划分为几部分。 2、将播放历史的n首歌曲之前加上s首歌曲,之后加上s首歌曲,为防止标号重复,分别将其标号为100001 + i和200001 + i。 3、枚举这个新的序列中的每首歌,
        阅读全文
                
摘要:题意:给定N个数,求和大于等于S的最短连续子序列的长度。 分析:滑动窗口即可。两种写法。 1、 2、
        阅读全文
                
摘要:题意:将序列1,2,3,……,n,用不超过2n^2次操作,通过下列操作变成给定序列。(1<=n<=300) 1、交换前两个元素 2、将第一个元素移到最后 分析:因为将序列变成升序更容易操作,所以倒着输出解,进行如下操作: 1、交换前两个元素 2、将最后一个元素移到第一个(当a[0] < a[1] |
        阅读全文
                
摘要:题意:输入一个n(2<=n<=1000,n是偶数)个字符串的集合D,找一个长度最短的字符串S(不一定在D中出现),使得D中恰好一半串小于等于S,另一半串大于S。如果有多解,输出字典序最小的解。 分析:找到最中间的两个串,直接按位构造。
        阅读全文
                
摘要:题意:环形跑道上有n(n <= 100000)个加油站,编号为1~n。第i个加油站可以加油pi加仑。从加油站i开到下一站需要qi加仑汽油。你可以选择一个加油站作为起点,起始油箱为空(但可以立即加油)。你的任务是选择一个起点,使得可以走完一圈后回到起点。假定油箱中的油量没有上限。如果无解,输出Not 
        阅读全文
                
摘要:题意:输入一个长度为n(n <= 10^6)的序列A,找到一个尽量长的连续子序列AL~AR,使得该序列中没有相同的元素。 分析: 法一:从r=0开始不断增加r,当a[r+1]在子序列a[l~r]中出现过,只需增大l,并继续延伸r,因为a[l~r]为可行解,则l增大后必然还是可行解。用set判断a[r
        阅读全文
                
摘要:题意:平面上有n(n <= 1000)个点,每个点为白点或者黑点。现在需放置一条隔板,使得隔板一侧的白点数加上另一侧的黑点数总数最大。隔板上的点可以看做是在任意一侧。 分析:枚举每个基准点i,将一条直线绕这个点旋转,每当扫过一个点,就可以动态修改两侧的点数。 对于--sum, 1、如果while循环
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号