zoukankan      html  css  js  c++  java
  • Codeforces Round #673 (Div. 2)

    C. k-Amazing Numbers

    题意

    给你两个数n,k,求从1~n之间的每一个i在长度为n的数组中的,所有连续的长度为i的数组的公共最小值,如果没有重复值则输出-1.

    代码

    #include<iostream>
    #include<vector>
    #include<queue>
    #include<cstring>
    #include<cmath>
    #include<map>
    #include<set>
    #include<cstdio>
    #include<algorithm>
    #define debug(a) cout<<#a<<"="<<a<<endl;
    using namespace std;
    const int maxn=3e5+100;
    typedef long long LL;
    const LL inf=1e18;
    LL ans[maxn]; 
    vector<LL>v[maxn];
    int main(void)
    {
      cin.tie(0);std::ios::sync_with_stdio(false);
      LL t;cin>>t;
      while(t--)
      {
      	LL n;cin>>n;
      	for(LL i=0;i<=n+10;i++) ans[i]=inf,v[i].clear();
      	for(LL i=1;i<=n;i++){
      		LL x;cin>>x;v[x].push_back(i);	
    	}
    	for(LL i=1;i<=n;i++)
    	{
    		if(!v[i].empty())
    		{
    			LL mx=0;
    			for(LL j=1;j<v[i].size();j++)
    			{
    				mx=max(mx,v[i][j]-v[i][j-1]);
    			}
    			mx=max(mx,v[i].front()); 
    			mx=max(mx,n-v[i].back()+1);//i之间最长的距离 
    			ans[mx]=min(ans[mx],i);//更新最小值 
    		}
    	}
    	for(LL i=2;i<=n;i++) ans[i]=min(ans[i],ans[i-1]);//能覆盖小的距离一定能覆盖大的距离 
    	for(LL i=1;i<=n;i++){
    		if(ans[i]<inf) cout<<ans[i]<<" ";
    		else cout<<"-1"<<" ";
    	} 
    	cout<<endl;
      }
    return 0;
    }
     
    
  • 相关阅读:
    看别人的代码学习的css
    Font Awesome
    响应式网站设计
    css兼容性的问题
    英语
    我的bootstrap使用的历程
    jquery的常用的容易忘记的东西
    jquery基本方法
    js与jquery的区别
    134123
  • 原文地址:https://www.cnblogs.com/wangqianyv/p/13795563.html
Copyright © 2011-2022 走看看