首页 > Subsequence
头像 虽然吧_但是
发表于 2020-05-22 07:31:24
题目大意:给定一个长度为n的序列,找出一个最短的子序列使其之和大于等于s我也就来摸摸鱼,尺取+前缀和弄一个双指针分别对前缀进行处理sum[i]代表前i项之和 要求i-j的子序列 只需要sum[j]-sum[i-1]即可接下来只要运用尺取法 在保证当前子序列之和大于等于s的情况下移动左指针一旦小于移动 展开全文
头像 包子超好吃
发表于 2021-01-15 16:51:30
//核心:尺取//详情见注释;#include<iostream>using namespace std;#define N 100000000 //取一个尽量大的数保证大于个数,用处见下文;int a[100006];int main(){ int n; cin>&g 展开全文
头像 平凡的小白
发表于 2020-05-31 01:27:24
题目大意:现有一段长度为10<N<100000的整数序列,每一个整数都小于等于10000。给定一个S<100000000,请你找到一段最小长度的连续子序列,使得子序列的和大于或等于S。思路:尺取法1.一个区间看成一个蚯蚓,当子序列的和小于S时,头往前伸,直到子序列的和大于或等于S就 展开全文
头像 一只羊蝎子
发表于 2021-01-22 17:00:33
题目要求找到长度最小的子串,使得字串和大于等于S既然是要长度最小,那我们就可以从长度为1开始遍历到长度为N,我们需要遍历次 ,当N非常大的时候耗时会特别长,所以可以稍微优化一下(双指针/尺取法)。 如果是按长度从1到N遍历,那么我们每次都要从子串的头到尾重新计算一次子串和,对此我们可以做出这样的优化 展开全文
头像 肖先生~
发表于 2020-05-30 15:14:55
前缀和 1.前缀和的题目,先求出其前缀和,然后定义两个边界依次遍历2.如果某段区间大于目标值,那么我们就缩小区间,否则就扩大区间,在遍历的同时,求出对应的符合目标值的ans值,当遍历完成之后,所得到的ans就是答案啦3.首先初始化ans的值,如果ans的从始至终都没有改变那么就输出0,因为不存在满足 展开全文
头像 吃花椒的妙酱
发表于 2021-01-13 17:11:44
//Subsequence //尺取法 #include <iostream> #include <cstring> #include <cstdio> using namespace std; int a[1000010];//定义输入数组 int mai 展开全文
头像 精神病科黄主任
发表于 2020-05-15 18:18:20
日常无聊摸鱼就写一下题解吧 题意:给一个长度为n的正整数序列和一个正整数s,现在要求一个子区间,使得子区间的和不小于s,求该区间长度最短是多少。 思路一:暴力O(n^2)枚举起点和终点,然后O(n)计算区间和。三个for是相互关联的,满足乘法原理,所以总复杂度O(n^3) 思路二:前缀和优化提前预处 展开全文
头像 安和桥北_
发表于 2022-01-01 16:01:39
题目简述: 给定 N 个正整数序列(10 < N < 100 000),每个正整数小于或等于 10000,并给出一个正整数 S(S < 100 000 000)。编写一个程序来查找序列中连续元素的子序列的最小长度,其总和大于或等于 S。 意思就是在一个数列中 找到一个最短的连续子 展开全文
头像 活泼泼
发表于 2021-03-28 07:00:52
尺取法(双指针)例题。暴力算法就是两重for循环枚举i和j的位置。这里我们可以进行优化:①当i到j的和≥s时,j就不需要往后移动了;②当i变成i+1时,由于i到j-1的和小于s,i到j的和≥s,因此i+1到j-1的和一定小于s。也就是说,当i加1时,j只需后移一位即可开始新一轮的判断。这里从i到j的 展开全文
头像 Deep_Dark_FAntasy♂
发表于 2020-05-24 23:59:43
尺取法裸题,给一串数列和一个S,求数列中的某个大于S的子数列长度最小。介绍一下尺取法:尺取法也叫 two pointer ,顾名思义,像尺子一样,一块一块的截取。尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以说尺取法是一种高效的枚举区间的方法,是一种技巧。用尺取法来优化,可以使复杂度 展开全文

等你来战

查看全部