#885

复制代码
//A //如果两者的距离是奇数的话,那就追不上,如果是偶数,那就追的上 //因为偶数是与小明同类型的位置,只需要把小明逼到墙角就可以了 //可以画一个九宫格,然后把9x9的格子分两种颜色染上,一开始在相同颜色的格子一定会相遇 #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; string s; int n,t,a[N],res,num,ans,m; bool vis[N]; bool check(int u) { int x=0,step=0; bool f=false,first=false; for(int i=0;i<n;i++){ if(f&&a[i]!=u||!first&&a[i]!=u) x=max(x,++step); else if(a[i]==u) f=!f,step=0,first=true; } if(res<=x) return false; else{ res=x; return true; } } signed main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n>>m; res=0x3f3f3f; for(int i=0;i<n;i++) cin>>a[i],ans=max(ans,a[i]); int l=1,r=ans+1; while(l<r){ int mid=l+r>>1; if(check(mid)) r=mid; else l=mid+1; } cout<<res<<endl; } return 0; }
复制代码

 

复制代码
//B //用lst数组来记录这个数字上一次出现的位置,然后把所有的情况统计到一个数组里面 //接下来分类讨论,对于当前数字的最大的距离,可以直接/2,然后比较/2之后的值与次大的距离,取最大 //然后取最小 #include <bits/stdc++.h> #define int long long using namespace std; const int N=1e6+10,mod=1e9+7; string s; int n,t,res,num,ans,m; bool vis[N]; signed main() { std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>t; while(t--){ cin>>n>>m; vector<int>a(n+1);vector<int>lst(m+1,-1);vector<vector<int>>f(m+1); for(int i=0;i<n;i++){ cin>>a[i]; f[a[i]].push_back(i-1-lst[a[i]]); lst[a[i]]=i; } ans=n; for(int i=0;i<=m;i++){ f[i].push_back(n-1-lst[i]); sort(f[i].begin(),f[i].end(),greater()); res=f[i][0]/2; if(f[i].size()>1) res=max(res,f[i][1]); ans=min(ans,res); } cout<<ans<<endl; } return 0; }
复制代码

 


__EOF__

本文作者Sakurajimamai
本文链接https://www.cnblogs.com/o-Sakurajimamai-o/p/17567608.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   o-Sakurajimamai-o  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
-- --
点击右上角即可分享
微信分享提示