yukicoder No.852 - 連続部分文字列

Source

ニコニコミュニティ
問題文

問題概要

省略

解法

省略

cLayversion 20190820-1)のコード

C++に変換後のコードはこちら

char S[1000002]; int N;
int cnt[26];
{
  int i, j, k, m;
  double res;
  
  rd(S@N);
  rep(i,N) S[i] -= 'a';

  res = 0;

  rep(k,1,27){
    j = 0;
    m = 0;
    rep(i,26) cnt[i] = 0;
    rep(i,N){
      while(j<N && m<k){
        if((cnt[S[j]]++)==0) m++;
        j++;
      }
      if(j==N && m<k) break;
      res += N-j+1;
      if((--cnt[S[i]])==0) m--;
    }
  }

  res /= (double)N*(N+1)/2;

  wt(res);
}

Current time: 2024年04月26日07時10分10秒
Last modified: 2019年08月21日06時07分28秒 (by laycrs)
Tags: Competitive_Programming_Incomplete yukicoder
トップページに戻る

Logged in as: unknown user (not login)

ログイン: