#6711. 尺取法专项练习 1
尺取法专项练习 1
1. 尺取法主要适合处理哪类问题 {{ select(1) }}
- 连续区间问题
- 全排列问题
- 树形结构问题
- 图论最短路问题
2. 尺取法一般使用几个指针进行操作 {{ select(2) }}
- 两个
- 一个
- 三个
- 四个
3. 以下关于尺取法时间复杂度正确的是 {{ select(3) }}
- O(n)
- O(n²)
- O(logn)
- O(n!)
4. 暴力枚举连续区间的时间复杂度高,尺取法作用是 {{ select(4) }}
- 优化效率,降低时间复杂度
- 增加代码长度
- 只能处理小数组
- 使逻辑更复杂
5. 在尺取法中,通常用来标记区间左端点的变量是 {{ select(5) }}
- mid
- k
- r / right
- l / left
6. 当区间条件不满足时,尺取法通常的操作是 {{ select(6) }}
- 左指针左移
- 左指针右移,缩小区间
- 清空数组
- 直接结束程序
7. 尺取法不能解决以下哪个问题 {{ select(7) }}
- 最短连续子区间
- 无序数组任意两数乘积
- 区间和满足条件
- 最长合法连续子串
8. 对于有序连续区间问题,尺取法相较于暴力枚举 {{ select(8) }}
- 运行更快
- 运行更慢
- 效率一致
- 只能小规模使用
9. 尺取法两个指针的移动特点是 {{ select(9) }}
- 可随意左右移动
- 只向右移动,不回头
- 只向左移动
- 固定不动
10. 尺取法在遍历过程中,数组遍历次数为 {{ select(10) }}
- 两层循环多次
- 仅一次
- 随机次数
- 固定三次
阅读以下代码:
#include <iostream>
using namespace std;
int a[100005];
int main()
{
int n, x;
cin >> n >> x;
for(int i = 1; i <= n; i++) cin >> a[i];
int l = 1, sum = 0, ans = 1e9;
for(int r = 1; r <= n; r++)
{
sum += a[r];
while(sum >= x)
{
ans = min(ans, r - l + 1);
sum -= a[l];
l++;
}
}
cout << ans;
return 0;
}
11. 本段代码使用尺取法思想求解问题 {{ select(11) }}
- 对
- 错
12. 变量 l 代表区间右端点 {{ select(12) }}
- 对
- 错
13. while 循环作用是不断缩小左边界,寻找最小区间 {{ select(13) }}
- 对
- 错
14. 代码中 sum 变量的作用是 {{ select(14) }}
- 记录数组最大值
- 记录当前区间总和
- 统计元素个数
- 记录答案
15. 该程序求解的问题是 {{ select(15) }}
- 最长上升子序列
- 区间元素个数
- 和大于等于x的最短连续子区间
- 数组最大值
16. 两个指针 l 和 r 的移动方向为 {{ select(16) }}
- 只向左移动
- 随意移动
- 固定不变
- 只向右移动
题目描述:利用尺取法,统计数组中不含重复数字的最长连续区间。
#include <iostream>
using namespace std;
int vis[1010];
int a[1010];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
int l = 1, ans = 0;
for(int r = 1; r <= n; r++)
{
while(vis[a[r]] == 1)
{
vis[_____(1)_____] = 0;
l++;
}
vis[a[r]] = _____(2)_____;
ans = max(ans, _____(3)_____);
}
cout << ans;
return 0;
}
17. 程序第 (1) 处应填入? {{ select(17) }}
- a[r]
- a[l]
- l
- r
18. 程序第 (2) 处应填入? {{ select(18) }}
- 0
- -1
- 1
- a[r]
19. 程序第 (3) 处应填入? {{ select(19) }}
- l - r
- r + l
- r - l + 1
- a[r]
20. 数组 vis 的作用是 {{ select(20) }}
- 存储区间和
- 标记数字是否在当前区间
- 记录指针位置
- 统计数组长度
21. 该题型属于尺取法经典的 {{ select(21) }}
- 区间求和模型
- 最值查找模型
- 排序模型
- 去重区间模型