专栏文章
CF2117C 酷分割
CF2117C题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip2e183
- 此快照首次捕获于
- 2025/12/03 05:02 3 个月前
- 此快照最后确认于
- 2025/12/03 05:02 3 个月前
题目传送门
思路
从题目中不难看出, 需要包含 所出现过的所有数。我们可以建两个 set,一个记录一个段的数 ,另外一个记录之前的所有数 ,当两个 set 的长度一样说明成功找到了一个段,那么此时数量 ,并且清空 。
最后还要再特判一下,当数量为 时,说明无法分割,只有一大段(即原数组),此时答案为 。
AC Code:
CPP#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N];
void solve()
{
set<int> s,sall;
int n;
cin >>n;
int cnt=0;
for(int i=1;i<=n;i++) cin >>a[i];
for(int i=1;i<=n;i++)
{
s.insert(a[i]);
sall.insert(a[i]);
if(s.size()==sall.size())
{
cnt++;
s.clear();
}
}
if(!cnt) cout <<cnt<<'\n';
else cout <<cnt<<'\n';
}
int main()
{
int t;
cin >>t;
while(t--)
{
solve();
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...