Submission #74290850
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string s1,s2;
vector<ll>sz;
vector<vector<ll>>p1,p2;
map<pair<ll,char>,ll>dp;
ll get_cnt(ll id,ll l,ll r,char ch){
ll c=ch-'a';
if(id==1)return p1[c][r]-p1[c][l-1];
else return p2[c][r]-p2[c][l-1];
}
ll dfs(ll idx,ll l,ll r,char ch){
if(l>r)return 0;
if(l==1 && r==sz[idx]){
if(dp.count({idx,ch}))return dp[{idx,ch}];
}
if(idx==1)return get_cnt(1,l,r,ch);
if(idx==2)return get_cnt(2,l,r,ch);
ll left_size=sz[idx-1];
ll res;
if(r<=left_size)res=dfs(idx-1,l,r,ch);
else if(l>left_size)res=dfs(idx-2,l-left_size,r-left_size,ch);
else{
ll part1=dfs(idx-1,l,left_size,ch);
ll part2=dfs(idx-2,1,r-left_size,ch);
res=part1+part2;
}
if(l==1 && r==sz[idx])dp[{idx,ch}]=res;
return res;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>s1>>s2;
ll q;
cin>>q;
p1.assign(26,vector<ll>(s1.size()+1,0));
p2.assign(26,vector<ll>(s2.size()+1,0));
for(ll i=0;i<s1.size();i++){
for(ll c=0;c<26;c++)p1[c][i+1]=p1[c][i];
p1[s1[i]-'a'][i+1]++;
}
for(ll i=0;i<s2.size();i++){
for(ll c=0;c<26;c++)p2[c][i+1]=p2[c][i];
p2[s2[i]-'a'][i+1]++;
}
sz.push_back(0);
sz.push_back(s1.size());
sz.push_back(s2.size());
while(sz.back()<(ll)1e18){
ll nxt=sz[sz.size()-1]+sz[sz.size()-2];
sz.push_back(min(nxt,(ll)1e18));
}
ll last=sz.size()-1;
while(q--){
ll l,r;
char ch;
cin>>l>>r>>ch;
cout<<dfs(last,l,r,ch)<<endl;
}
return 0;
}
Submission Info
Submission Time
2026-03-21 21:34:24+0900
Task
E - Fibonacci String
User
bplizard
Language
C++23 (GCC 15.2.0)
Score
450
Code Size
1732 Byte
Status
AC
Exec Time
587 ms
Memory
7840 KiB
Compile Error
./Main.cpp: In function 'int main()':
./Main.cpp:52:17: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
52 | for(ll i=0;i<s1.size();i++){
| ~^~~~~~~~~~
./Main.cpp:57:17: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for(ll i=0;i<s2.size();i++){
| ~^~~~~~~~~~
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
450 / 450
Status
Set Name
Test Cases
Sample
sample_01.txt
All
random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, sample_01.txt
Case Name
Status
Exec Time
Memory
random_01.txt
AC
360 ms
3592 KiB
random_02.txt
AC
360 ms
3732 KiB
random_03.txt
AC
430 ms
3596 KiB
random_04.txt
AC
435 ms
3672 KiB
random_05.txt
AC
501 ms
3744 KiB
random_06.txt
AC
498 ms
3668 KiB
random_07.txt
AC
506 ms
3736 KiB
random_08.txt
AC
502 ms
3616 KiB
random_09.txt
AC
430 ms
3728 KiB
random_10.txt
AC
506 ms
3696 KiB
random_11.txt
AC
498 ms
3672 KiB
random_12.txt
AC
571 ms
7688 KiB
random_13.txt
AC
587 ms
7840 KiB
random_14.txt
AC
561 ms
7648 KiB
sample_01.txt
AC
1 ms
3620 KiB