因為要求最大美麗值和的子串,不能相互重疊,那麼我們記錄每個子串的長度dep[i],在對母串進行字串匹配時,進行狀態轉移,
ans[i]=max(ans[i],ans[i-dep[i]]+val[i]),這樣就能求得最大的答案了。
#include #include #include #include #include #include #include using namespace std;
//由於題目中子串美麗度計算時不可重複,因此記錄每個字串長度,
int val[10000],dep[10000];
int ans[1000100];
struct tire
end[cnt++]=-1;
return cnt-1;
}void init()
void insert(string s,int id)
else
}while(!q.empty())
else}}
}void query(string s)
tmp=fail[tmp];}}
}};tire ac;
string s;
int main()
ac.build();
cin>>s;
ac.query(s);
cout<<*max_element(ans,ans+s.size())<}
return 0;
}
nefu1299 替換字串
problem 1299 time limit 1000ms memory limit 65535k 給出乙個只含 a b 字元的串,問不斷將串中的 ab 字串替換為 bba 至少需要幾次可以結束替換。乙個只含 a b 的字串 s,s 1e6 輸出替換的次數,結果對 1e9 7 取餘 ab aab ...
挑戰字串 簡化路徑
以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱 linux unix中的絕對路徑 vs 相對路徑 ...
javascript翻轉字串演算法挑戰
你可以先把字串轉化成陣列,再借助陣列的reverse方法翻轉陣列順序,然後把陣列轉化成字串。function reversestring str reversestring hello reversestring hello 應該返回乙個字串 reversestring hello 應該返回 oll...