CF222A 题解
刷 *1200 偶然刷到的一题,虽然是 *1200,但是感觉不那么显然,题目链接。
考虑操作一次这个序列会发生什么变化,显然,对于 这个整体来说,无论操作多少次,里面元素只是相对位置变化了而已,所以说只要 中有不同的元素,那么就一定无解。
反之,如果 里的元素全部相同,那么在最多删 次以后,所有元素都会变的相同,也就是一定有解。但是,如果存在一个 ,使得 这段区间内也都相同,那么显然我们只需要删到 ,也就是操作 次,就能使得序列全部相同了。
const int MAXN = 1e5 + 5;
int a[MAXN], n, k;
signed main(void) {
cin >> n >> k;
for (int i = 1; i <= n; ++i) cin >> a[i];
int las = a[k], ans = 0;
for (int i = k; i <= n; ++i) {
if (a[i] != las) {
cout << -1 << endl;
return 0;
}
}
for (int i = 1; i <= n; ++i) {
if (a[i] != las) ans = i;
}
cout << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】