常用技巧精选(一) 尺取法 POJ 2566 给出一个长度n(<=1e5)的数列,每个数的大小在-1e4-1e4之间,给出若干询问值,要求一段字串和,它的绝对值与询问值最接近 好题目。由于数列有正有负,所以不能直接二分或尺取。考虑对前缀和排序 得到一个新数列,此时新数列任意一段子串都对应原数列的一个 ...
分类:
其他好文 时间:
2020-02-05 20:05:46
阅读次数:
70
poj 2100 尺取法(尺度法) 题意 给你一个数 ,然后找到一个连续的序列,使得这个序列中的数的平方和等于 。 输出需要注意的是第一行为解的个数,剩下的每行先输出序列的长度,然后输出序列。按照序列的长度进行降序输出。 解题思路 没啥好说的,使用尺度法,进行枚举各个区间上的数。 需要注意的是数字 ...
分类:
其他好文 时间:
2020-02-04 14:17:34
阅读次数:
66
P2698 [USACO12MAR]花盆Flowerpot 题意: 给出水滴的坐标与下落时间,你需要构造一个盆,使他的宽度满足在其范围内能够接住水滴时间(第一滴和最后一滴/最大与最小值)时间差大于等于k,且使得这个盆的直径最小 思路: 会想到尺取法(双指针)来在符合条件内缩小范围,同时又涉及到区间最 ...
分类:
其他好文 时间:
2019-11-24 00:05:15
阅读次数:
108
一、首先介绍一下什么叫尺取 过程大致分为四步: 1.初始化左右端点,即先找到一个满足条件的序列。 2.在满足条件的基础上不断扩大右端点。 3.如果第二步无法满足条件则到第四步,否则更新结果。 4.扩大左端点,并且回到第二步。 很明显如果要这样做,那么这个序列要是一个有顺序的序列,因为这样的话保证左端 ...
分类:
其他好文 时间:
2019-11-13 22:27:16
阅读次数:
94
尺取法,先右挪右端点,可以了就挪左端点至不行,然后又挪右端点,一直一直一直这样子 #include<iostream> #include<cstdio> #define ri register int #define u int namespace opt { inline u in() { u x ...
分类:
其他好文 时间:
2019-11-10 09:50:37
阅读次数:
66
描述 【题解】 尺取法 对于[l..r]这段 如果新加进来的s[r]有和之前的重复。 那么就不用重新开始了。 直接递增左区间。 让这段没有重复数字了再说。 然后再把s[r]加进去。 【代码】 cpp class Solution { public: int lengthOfLongestSubstr ...
分类:
其他好文 时间:
2019-11-01 00:06:04
阅读次数:
103
Graveyard Design 题目链接:http://poj.org/problem?id=2100 题目大意:给定一个数,求出所有连续区间的平方和等于该数。 解题思路:尺取法,当区间小于给定数,区间r++,区间和+=r*r;当区间大于给定数,区间和-=l*l,区间l++。 代码如下: ...
分类:
其他好文 时间:
2019-10-21 20:34:33
阅读次数:
83
$SP1825$ 看到没有人用老师的办法,于是自己写一下思路 思路第一步:排除旧方法 首先这道题和 "$4178$" 不一样,因为那道题是计数,而这道题是求最值,最值有个坏处,就是对于 来自相同子树的信息没法高效剔除 ,比如容斥用不了,举例来说,对于这道题,如果我们继续用尺取法维护黑点个数,对于一组 ...
分类:
其他好文 时间:
2019-10-04 20:34:28
阅读次数:
100
反复推进区间的开头与末尾,这样的方法叫做尺取法,求给定长度内的最短区间可以满足某些性质。 POJ3061 题意: 给定长度为 n 的数列整数,以及整数 S ,求出总和不小于 S 的连续子序列的长度的最小值.如果解不存在则输出 0 。 解: 不断的推进首位,每推进一次首位,就往后推近末尾直到区间序列的 ...
分类:
其他好文 时间:
2019-10-03 16:04:22
阅读次数:
89
题目链接:https://nanti.jisuanke.com/t/41415 赛后补题。 参考博客:https://blog.csdn.net/bjfu170203101/article/details/100889468 题意:给出一个主串(假设长度为m),再给出n个模式串,对于每一个模式串,如 ...
分类:
其他好文 时间:
2019-09-18 01:22:29
阅读次数:
110