SRM 502 Div 1 - Problem 250 TheLotteryBothDivs
問題
SRM 502 Div 1 - Problem 250 TheLotteryBothDivs
TopCoder Statistics - Problem Statement
使用言語
C++
方針
・setを用意する.
・setの各要素について,要素の各下位str.length()字が新たな文字列strに一致する場合は,その要素を廃棄.str追加.
・新たな文字列strについて,strの下位itr.length()字がsetのある要素itrに一致する場合はstrは廃棄.
問題点
・ほとんどのケースで通るが112番目のケースでWA,コーナーケースか?(201808022025現在)
所感
・実装するだけだと思っていたが...
コード
#define lgt length() set<string> st; void add (string str) { bool flag = true; for (string itr: st) { if (itr.lgt >= str.lgt) { if (itr.substr(itr.lgt-str.lgt, str.lgt) == str) st.erase(itr); } else { if (str.substr(str.lgt-itr.lgt, itr.lgt) == itr) flag = false; } } if (flag) st.insert(str); } class TheLotteryBothDivs { public: double find(vector<string> goodSuffixes) { int size = goodSuffixes.size(); double ans = 0.0; for (size_t i = 0; i < size; i++) add(goodSuffixes[i]); for (string itr: st) { cout<<itr<<endl; ans += pow(0.1, itr.lgt); } return ans; } };