首页 > dd爱框框
头像 Xuan2333
发表于 2026-04-21 10:57:03
时隔不知道多久我又来更新题解了(拖更qwq)本题为什么是一个双指针的题目呢?首先看题目里说的,要维护的是连续区间的最短长度并且该区间内还需要保证权值之和大于x,所以我们就需要维护两个指针(变量)来实现查找一段连续的区间;我们来看看右移右指针和右移左指针会有什么变化:当右移右指针时,区间长度变大,这显 展开全文
头像 AliLexiWalker
发表于 2026-04-21 08:19:46
用双指针维护当前区间和 ,右指针不断扩展直到 后尽量右移左指针收缩区间,并在每次满足条件时按“长度最短,左指针最小”更新答案; void solve(){ int n,x;cin>>n>>x; vi a(n+1); for(int i=1;i<=n; 展开全文
头像 飞鸢泛惊鸿
发表于 2026-04-21 14:22:11
import sys import array input=sys.stdin.readline n,x=0,0 nums=array.array('i', []) num=0 while True: s=sys.stdin.buffer.read() if not s:break 展开全文
头像 牛客360477555号_jx
发表于 2026-04-03 14:33:53
涉及算法:滑动窗口(同向双指针) 解决思路: 定义两个指针 left = 0, right = 0; right向后遍历数组 进窗口:sum += arr[right] 判断:如果 sum >= x,就重复以下操作:     &n 展开全文
头像 Ian_Zh
发表于 2026-04-21 22:13:26
滑动窗口维护:使用两个指针 left 和 right 表示当前窗口的左右边界,维护窗口内元素的和 sum。扩展窗口:right 指针不断向右移动,将新元素加入窗口(sum += a[right])。收缩窗口:当窗口内元素和 sum >= x 时:记录当前窗口长度 right - left + 展开全文
头像 BeauWill
发表于 2026-04-21 01:21:47
Modern Cpp二分写法 #include <iostream> #include <vector> #include <algorithm> #include <numeric> using i64 = long long; int main 展开全文
头像 狂点技能树
发表于 2021-06-01 17:28:11
双指针模板题。思路: 其实没什么好说的,这题都讲烂了,无非是维护两个指针 l,r 来标识前后位置,维护 sum 代表其间的和,若 sum 大于等于 x 就尝试更新答案并移动左指针,若 sum 小于 x 就移动右指针(指针都只向前移动,移动时保证 sum 为 l,r 之间的和) 唯一的麻烦在于边界处 展开全文
头像 星璇Xx
发表于 2026-04-21 20:50:15
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 10000000+10; ll pre[N]; int main(){ int n,x; cin >> 展开全文
头像 YS向阳而生
发表于 2026-04-21 22:15:04
单调性:都是正数,区间越大,越容易达成>=x的条件 因此用滑动窗口j是区间右边界,开区间,每次循环将j位置的值加入,j跳转下一位置,若此时sum >= x,开始尝试缩小左区间,即sum -= a[i++];如果是满足条件的最短区间,更新l, r, len编号从1开始,输出前将l和r 展开全文
头像 yycx219
发表于 2026-04-21 23:41:37
做完之后看了一圈题解没发现用二分的,那本蒟蒻就来写一下二分吧 #include <bits/stdc++.h> using namespace std; #define endl '\n' #define int long long//某人不开long long最后一个样例没过 #def 展开全文