結果
問題 | No.1171 Runs in Subsequences |
ユーザー |
![]() |
提出日時 | 2020-08-15 16:46:13 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,493 bytes |
コンパイル時間 | 1,626 ms |
コンパイル使用メモリ | 171,024 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-10 18:11:22 |
合計ジャッジ時間 | 2,594 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 7 WA * 11 |
ソースコード
//#define _GLIBCXX_DEBUG#include <bits/stdc++.h>#define FOR(i,a,b) for(int i=a;i<b;i++)#define rep(i,n) FOR(i,0,n)#define ROF(i,a,b) for(int i=a;i>=b;i--)#define per(i,a) ROF(i,a,0)#define pb push_backusing namespace std;using ll=long long;using ld=long double;using ch=char;typedef pair<ll,ll> P;typedef vector<ll> vl;typedef vector<vl> vvl;typedef vector<P> vP;typedef vector<ch> vc;typedef vector<vc> vvc;const ll MOD=1000000007;const ll MOD2=998244353;const ld PI=acos(-1);const ll INF=1e18;struct edge{ll to,cost;};struct edge2{ll from,to,cost;};template <typename T>bool chmax(T &a, const T& b) {if (a < b) {a = b;return true;}return false;}template <typename T>bool chmin(T &a, const T& b) {if (a > b) {a = b;return true;}return false;}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string s;cin >> s;ll N=s.size();vl power_2(N+1);;power_2[0]=1;rep(i,N){power_2[i+1]=2*power_2[i];power_2[i+1]%=MOD;}int M=26;vl dp(M+1);dp[M]=1;ll ans=-1;rep(i,N){vl nowdp=dp;ll x=s[i]-'a';rep(j,M+1){nowdp[x]+=dp[j];if(x!=j&&j!=M)ans+=dp[j]*power_2[N-1-i];ans%=MOD;}swap(nowdp,dp);}cout << (MOD+ans+power_2[N])%MOD << '\n';}/*overflow checked?corner case checked?boundary checked?not TLE in worst case checked?*/