zoukankan      html  css  js  c++  java
  • Codeforces Round #673 C. k-Amazing Numbers

    题目大意:有一个长度为n的数组a,定义k-amazing为a中每个长度为k的子串都有的数字中最小的。要求输出k=1,2...n时的k-amazing。

    思路:对每个数字求最长间距cal 则k>=cal时表示k-amazing条件成立 注意应该对一个数字中第一次出现的位置和最后一次出现的位置特判

     1 #include<bits/stdc++.h>
     2 #define fi first
     3 #define se second
     4 #define pb(i) push_back(i)
     5 #define rep(i,a,b) for(int i=a;i<=b;i++)
     6 #define per(i,a,b) for(int i=b;i>=a;i--)
     7 #define mem(a,b) memset(a,b,sizeof(a))
     8 #define VI vector<int>
     9 #define VLL vector<ll>
    10 #define MPII map<pair<int,int>,int>
    11 #define mp make_pair
    12 #define PQI priority_queue<int>
    13 using namespace std;
    14 typedef long long ll;
    15 typedef unsigned long long ull;
    16 const int N = 3e5+10;
    17 const int INF = 0x3f3f3f3f;
    18 const int inf = - INF;
    19 const int mod = 1e9+7;
    20 const double pi = acos(-1.0);
    21 const double eps=1e-5;
    22 int n;
    23 vector<int>v[N];
    24 int ans[N];
    25 int main(){
    26     int T,x;
    27     scanf("%d",&T);
    28     while(T--){
    29         scanf("%d",&n);
    30         rep(i,0,n) ans[i]=INF,v[i].clear();
    31         rep(i,1,n){
    32             scanf("%d",&x);
    33             v[x].push_back(i);
    34         }
    35         rep(i,1,n){
    36             if(v[i].empty())continue;
    37             int dis=0;
    38             for(int j=1;j<v[i].size();j++)
    39                 dis=max(dis,v[i][j]-v[i][j-1]);
    40             dis=max(dis,max(v[i].front(),n-v[i].back()+1));
    41             ans[dis]=min(ans[dis],i);
    42         }
    43         rep(i,2,n) ans[i]=min(ans[i],ans[i-1]);
    44         rep(i,1,n){
    45             if(ans[i]==INF) printf("-1 ");
    46             else printf("%d ",ans[i]);
    47         }
    48         printf("
    ");
    49         /*
    50         rep(k,1,n){
    51             int flag=-1;
    52             rep(i,1,n){
    53                 if(k>=cal[i]){
    54                     flag=i;
    55                     break;
    56                 }
    57             }
    58             printf("%d%c",flag,k==n?'
    ':' ');
    59         }*/
    60     }
    61     system("pause");
    62     return 0;
    63 }
  • 相关阅读:
    新博客即将启用
    关于博主 | 联系博主
    结束吧,为这不圆满的故事划上一个残缺的句号
    自用线段树模板
    NOIP 2017 day 1 游记
    NOIP 2017 Day 0. 游记
    NOIP 2017 day -1 杂记
    再一次想不出应该起什么标题
    做图与树做到吐的一天
    自用二分图匹配模板
  • 原文地址:https://www.cnblogs.com/yoshinaripb/p/13880823.html
Copyright © 2011-2022 走看看