Codeforces 1257C Dominated Subarray 题解
博客观赏效果更佳
题意简述
定义“支配数组”:长度>=2,且出现次数最多的那个数字唯一。
给定一个数组,请你求出这个数组中,长度最小的是“支配数组”的连续子序列的长度。
数组长度<=2e5。
思路
最短的“支配连续子序列”,显然是:最左边和最右边两个数字相同,中间的数组两两不同。
设pre[i]表示a中上一个和a[i]的值相同的位置。换句话说,pre[i]=max{j,满足a[j]==a[i]}
那么只要求所有i-pre[i]+1的最小值即可。
代码
#include <bits/stdc++.h>
using namespace std;
namespace Flandre_Scarlet
{#define N 255555#define F(i,l,r) for(int i=l;i<=r;++i)#define D(i,r,l) for(int i=r;i>=l;--i)#define Fs(i,l,r,c) for(int i=l;i<=r;c)#define Ds(i,r,l,c) for(int i=r;i>=l;c)#define MEM(x,a) memset(x,a,sizeof(x))#define FK(x) MEM(x,0)#define Tra(i,u) for(int i=G.Start(u),__v=G.To(i);~i;i=G.Next(i),__v=G.To(i))#define p_b push_back#define sz(a) ((int)a.size())#define iter(a,p) (a.begin()+p)void R1(int &x){x=0;char c=getchar();int f=1;while(c<'0' or c>'9') f=(c=='-')?-1:1,c=getchar();while(c>='0' and c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();x=(f==1)?x:-x;}void Rd(int cnt,...){va_list args;va_start(args,cnt);F(i,1,cnt) {int* x=va_arg(args,int*);R1(*x);}va_end(args);}int n,a[N];void Input(){R1(n);F(i,1,n) R1(a[i]);}int pre[N],pos[N];void Soviet(){MEM(pos,-1);MEM(pre,-1);bool flag=0;int ans=0x3f3f3f3f;F(i,1,n){pre[a[i]]=pos[a[i]];pos[a[i]]=i;if (pre[a[i]]!=-1) ans=min(ans,i-pre[a[i]]+1),flag=1;}if (!flag) puts("-1");else printf("%d\n",ans);}#define Flan voidFlan IsMyWife(){int t;R1(t);F(i,1,t){Input();Soviet();}}
}
int main()
{Flandre_Scarlet::IsMyWife();getchar();getchar();return 0;
}
Codeforces 1257C Dominated Subarray 题解相关推荐
- 【CodeForces 1257C --- Dominated Subarray】
[CodeForces 1257C --- Dominated Subarray] Description Let's call an array t dominated by value v in ...
- codeforces 1257C Dominated Subarray
题意就是找到一个最小的子区间使得这个区间中只有一个数的个数为2. AC代码: #include<cstdio> #include<cstring> #include<io ...
- Code force 1527C dominated subarray 题解
题目大意: 给你一串数字:你就是要找出那串数字中首尾相同的某个子串,这样的子串可能存在多个,找出最小子段的长度 看一眼数据,如果暴力一点,复杂度是n^2;那就是两百万的计算量,而计算机一秒是一百多万, ...
- Dominated Subarray[codeforces 1257C]题解
Dominated Subarray[codeforces 1257C] CF-1257C(Dominated Subarray) 题目 输入 输出 题目大意 样例输入 样例输出 CF-1257C(D ...
- Codeforces 1257 C. Dominated Subarray
Codeforces 1257 C. Dominated Subarray https://codeforces.com/contest/1257/problem/C 思路:从数组的开始将每个出现过的 ...
- Educational Codeforces Round 76 (Rated for Div. 2) C. Dominated Subarray
Dominated Subarray 题意:给n个数,找出这个数组中出现数字最多且仅出现一次的子区间,简单来想即首尾数字相同区间内各个字符不同. 自我反思:一道简单的思维题,就是理解题意挺费劲的. # ...
- codeforces div2 Not Assigning 题解
codeforces div2 Not Assigning 题解 原题链接 /* 题意:构造一棵素数树.素数树定义如下: 这颗树中任意一条边 or 任意两条边 权重之和为素数,每条边的权重自己分配. ...
- Dominated Subarray
Dominated Subarray Let's call an array t dominated by value v in the next situation. At first, array ...
- Dominated Subarray CodeForces - 1257C
贪心思想,确实自己做还是没有思路,看了别人的代码后豁然开朗 #include<bits/stdc++.h> using namespace std;const int maxn=2e5+1 ...
最新文章
- 语言兔子繁衍问题讲解_二年级思维数学:位置问题,找到重复部分是解题关键...
- 小甲鱼-013元组tuple:上了枷锁的列表
- javaWeb项目 IDEA中导入eclipes项目的方法。maven多模块项目(父子模块)与普通的web项目导入
- python求三个数中最小(大)的元素
- ASP.NET小技巧——回传后保持页面的滚动位置
- html5表单密码验证及提示,HTML5表单及其验证(示例代码)
- jQuery 版本viewer.js插件的结构分析与学习
- python求完全平方数_【Python】【demo实验6】【练习实例】【完全平方数相关】
- mysql case 2个返回值_MySQL函数简介 2
- 互联网晚报 |11/24 星期四 | 比亚迪涨价2000到6000元不等;苹果15或告别纯直边;星巴克回应0.01元抢券不兑换...
- 全桥逆变电路MOS管的关断尖峰怎么解决
- Python:批量修改图片的后缀名
- can‘t find part type item<$OSR_SYMS>
- unity 游戏体围绕x,y,z轴进行转动
- Android UI视图效果篇之仿QQ好友列表分组悬浮PinnedHeaderExpandableListView
- Python2.7获取QQ空间好友头像
- chrome 谷歌浏览器升级 rem布局问题
- 输入寄送货物的重量w,根据某快递公司的运费计算方案,计算并输出快递运费p。
- 关于内部人员威胁追捕 你需要知道这些
- Linux内核基础——Linux源码阅读工具Source Insight4.0
热门文章
- 字符串分割成数组元素和去掉重复元素
- c++ 函数vector传参
- linux环境中C#导出word
- python下载链接图片并保存,python通过链接下载文件
- springboot毕设项目学习平台m55rv(java+VUE+Mybatis+Maven+Mysql)
- iOS 打破沙盒限制 处理其他App的Office等文件(上传、下载、预览)
- qeePHP学习 qeePHP模型的CURD
- 国央企外资银行/基金/券商/传统企业研发高管等职位点这里,组个不卷的局
- fs-extra 操作文件
- 河南六成公务员想过辞职 最终无1人实践