专栏文章
题解:CF1257C Dominated Subarray
CF1257C题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mip232ys
- 此快照首次捕获于
- 2025/12/03 04:54 3 个月前
- 此快照最后确认于
- 2025/12/03 04:54 3 个月前
这是一道贪心的题目。
实际上有可能最短的子序列就是开头和结尾是同一个数,中间都是不同的数字。我们维护整个数列中每个数字 上一次出现的位置 ,则答案为 ,如果没有这样的值输出 即可。
CPP#include<bits/stdc++.h>
using namespace std;
unordered_map<int, int> l;
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int ans = INT_MAX;
l.clear();
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
if (l.count(x)) ans = min(ans, i - l[x] + 1);
l[x] = i;
}
cout << (ans == INT_MAX ? -1 : ans) << '\n';
}
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...