I solve a problem1538E — Funny Substrings. But I found a new test to hack myself. The hack test is :
input 1 4 a := h b := ahaabc c = b + a d = a + c
output 1
But my code output 0. I want provide these test but I don't know how to provide my test. My submissions id is 120211661. There is my code. ~~~~~
include
include
include
include
include
include
define int long long
using namespace std;
struct Node{ int val; string pre,suf; Node(string _s="") { val=0; int len=min((int)_s.size(),3ll); if(_s.size()!=0)pre=_s.substr(0ll,len); if(_s.size()!=0)suf=_s.substr(max((int)_s.size()-3,0ll),len); for(int i=0;i<=(int)(_s.size()-4ll);i++) { if(_s.substr(i,4)=="haha") ++val; } } friend Node operator + (Node a,Node b) { Node ret=Node(); if(a.pre.size()<3||b.pre.size()<3) { ret=Node(a.suf+b.pre); ret.val+=a.val+b.val; } else { ret.pre=a.pre;ret.suf=b.suf; ret.val=a.val+b.val+Node(a.suf+b.pre).val; } return ret; }
};
int t,n;
signed main() { // freopen("in.txt", "r", stdin); cin>>t; while(t--) { cin>>n; map<string,Node>mp; string last; while(n--) { string x,opt; cin>>x>>opt; last=x; if(opt==":=") { string s; cin>>s; mp[x]=Node(s); } else { string s1,s2; cin>>s1>>s2>>s2; mp[x]=mp[s1]+mp[s2]; } } cout<<mp[last].val<<'\n'; } return 0; } ~~~~~