题目:题目链接 思路:见紫书,对具体操作方式还不是很理解,代码是从一个题解里看的,以后多回顾下,需要理解 代码: ...
分类:
其他好文 时间:
2018-10-27 11:54:32
阅读次数:
124
two pointers练习题。 这道题求的是一个最短的区间长度,满足其中所有的数字都出现。 暴力的做法是两次枚举,复杂度$O(n^2)$。 更优美的是尺取法,英文名叫two pointers。(两个指针。。。) 算法大概的过程是这样的: 其实真的是很优美的,代码也很短。 希望我能真的学会吧。。。 ...
分类:
其他好文 时间:
2018-10-13 02:36:11
阅读次数:
116
这题没有考虑到m这个东西,所以就没有往二分答案的方向想 二分答案 check的时候,我们找的是大于等于x的数有多少个被加入到那个数组中。如果 >= m说明这个数可能是答案,否则就不是。 用尺取来计数,还算比较好理解。 ...
分类:
其他好文 时间:
2018-10-01 23:14:56
阅读次数:
194
直接贴题目吧 POJ 3061 题意:求区间连续和大于等于$S$的最小长度 这是一道A了一年有多的题目..(感觉我变老了 朴素做法:枚举每一个左端点$l$,找出最近的合法右端点$r$,$O(n^2)$更新答案 无脑做法:直接二分答案,$O(nlogn)$ 尺取法:从朴素做法中尝试优化,如果枚举的$l ...
分类:
其他好文 时间:
2018-09-29 17:43:27
阅读次数:
149
Description "Luogu3069" "USACO" Solution 由于两个点之间最多可以有$k+1$种牛,而牛的种数是单调的。所以可以用尺取法(区间伸缩法),每次右移右端点后,让左端点不断右移直到牛的种数不大于$k+1$就好了。 Code Note 当需要维护的性质满足区间单调的话, ...
分类:
其他好文 时间:
2018-09-24 21:08:08
阅读次数:
219
题面 题意:在一大段时间里,告诉你,你签到了哪些区间,现在再给你m张补签卡,问你最多能实现连续签到多少天 题解:那些时间区间是有重叠的,所以我们先排序离散,并得到哪些区间是可以补签的,这样问题就变成,签过的天是0,没签过的是1,然后问区间和<=m的最大长度是多少,就转换为Poj-3061差不多一样的 ...
分类:
其他好文 时间:
2018-09-23 15:11:25
阅读次数:
148
题面 题意:给你一个长度为n(n<100000)的数组,让你找到一个最短的连续子序列,使得子序列的和>=m (m<1e9) 题解: 1 显然我们我们可以二分答案,然后利用前缀和判断是否可行,这样是O(nlgn)的 注意没有答案 ans输出0 ...
分类:
其他好文 时间:
2018-09-23 11:38:40
阅读次数:
135
思路: 尺取法。 循环i:1~26,分别计算恰好包含i种字母并且每种字母出现的次数大于等于k个的最长子串长度。 没法直接使用尺取法,因为不满足区间单调性,但是使用如上的方法却是可以的,因为子串中包含的字母种类数是满足区间单调性的。 实现: ...
分类:
其他好文 时间:
2018-09-09 21:05:54
阅读次数:
185
1、尺取法 2、反转法:[USACO07MAR]面对正确的方式Face The Right Way 思路:主要是考虑一个点翻转两次后就会变回原样,然后用前缀和判断是否翻转就可以了: code: include include include include include include inclu ...
分类:
其他好文 时间:
2018-09-07 16:46:09
阅读次数:
181