尺取法及例题、习题大全
例1、洛谷P1147
正整数数序列自然有序,考虑双指针。
用
当
当
在双指针移动的过程中,如果有 sum==M 的情况就输出。
因为两个指针都是单调向右移动,也只扫一遍,可以证明时间复杂度为
#include <bits/stdc++.h> using namespace std; using i64 = long long; int main() { ios::sync_with_stdio(false), cin.tie(nullptr); int M; cin >> M; int i = 1, j = 2, sum = 3;//初始时sum = i + j = 3 while (i < j) {//区间长度至少为2 if (sum < M) { j++; sum += j; } else { if (sum == M) cout << i << " " << j << "\n"; sum -= i; i++;//i++, j++ 和 sum += j, sum -= i的相对位置不能改变 } } return 0; }
例2、洛谷P1102
本文作者:pangyou3s
本文链接:https://www.cnblogs.com/pangyou3s/p/18231340
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步