結果
問題 | No.852 連続部分文字列 |
ユーザー | やむなく |
提出日時 | 2019-07-26 21:36:43 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 71 ms / 3,153 ms |
コード長 | 1,183 bytes |
コンパイル時間 | 1,594 ms |
コンパイル使用メモリ | 173,280 KB |
実行使用メモリ | 8,596 KB |
最終ジャッジ日時 | 2024-07-02 06:44:03 |
合計ジャッジ時間 | 3,460 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
// // Created by yamunaku on 2019/07/26. // #include <bits/stdc++.h> using namespace std; #define rep(i, n) for(int i = 0; i < (n); i++) #define repl(i, l, r) for(int i = (l); i < (r); i++) #define per(i, n) for(int i = ((n)-1); i >= 0; i--) #define perl(i, l, r) for(int i = ((r)-1); i >= (l); i--) #define all(x) (x).begin(),(x).end() #define MOD9 998244353 #define MOD1 1000000007 #define IINF 1000000000 #define LINF 1000000000000000000 #define SP <<" "<< #define CYES cout<<"Yes"<<endl #define CNO cout<<"No"<<endl #define CFS cin.tie(0);ios::sync_with_stdio(false) #define CST(x) cout<<fixed<<setprecision(x) typedef long long ll; typedef long double ld; typedef vector<int> vi; typedef vector<vector<int>> mti; typedef vector<ll> vl; typedef vector<vector<ll>> mtl; int main(){ string s; cin >> s; ld n=s.length(); vector<queue<int>> nx(26); rep(i,n){ nx[s[i]-'a'].push(i); } ld ans=0; rep(i,n){ rep(j,26){ if(!nx[j].empty()){ ans+=n-nx[j].front(); if(nx[j].front()==i) nx[j].pop(); } } } CST(10); cout << ans/(n*(n+1)/2) << endl; return 0; }