2012-06-08
SRM 545
Div1 Easy (275) StrIIRec
問題
- 長さがNの文字列Sの各文字をS[x]で表す。
- 0 <= i < j < NにおいてS[i] > S[j]が成り立つ個数がスコアとなる。
- aから順にN個のアルファベットを使った文字列で、
- 与えられた文字列minStrよりも辞書順で小さくなく、
- スコアがminInv以上で、辞書順最小の文字列を求める。
方針
- アルファベットを逆に並べたものが最大のスコア N*(N-1)/2
- 全体としては、辞書順でminStr以上となる文字列を、手戻りが少ないように探す
- minStrをprefixとして、そのあとに辞書順最大の文字列を加えてみて、スコアを計算する
- もしminInv以上ならば、解が存在するということなので、prefixを固定して、残りの部分がminInv以上になるまで辞書順最小から探索する
- minInvを下回るのならば、そのprefixではだめなので、最後の文字を+1して、そのあとに辞書順最大の文字列を加える
- それでもだめならprefixを1文字減らして、最後の文字を+1する、という操作を繰り返す
- prefixがなくなったら、不可能なので終了
- https://github.com/firewood/topcoder/blob/master/srm_5xx/srm_545/StrIIRec.cpp
結果
0pt 480th rating 1299 -> 1278
文字列の探索はけっこうしんどい。
証明してないが、スコアがminInvちょうどのときは、その文字列を返してしまってよさそう。
コメントを書く
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120608
リンク元
- 76 https://topcoder-g-hatena-ne-jp.jag-icpc.org/
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=srm 537 div1&source=web&cd=2&ved=0CFgQFjAB&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120318/1332075002&ei=MHjUT_LiD4jfmAWzvKySAw&usg=AFQjCNGhKwWxNLuZZSTxggTUOyF4N2xP-A
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CGIQFjAB&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120106/1325873167&ei=HqHUT825LMWziQfRzLmdAw&usg=AFQjCNFrbh5G5KRUfLYY3ZwhYI51ziANvg&sig2=dyw4kiRwhIDzfrX-7ZUVww
- 2 http://www.google.com/search
- 2 https://topcoder-g-hatena-ne-jp.jag-icpc.org/agw/20120524/1337835652
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=srm543&source=web&cd=3&ved=0CFkQFjAC&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120526/1338037995&ei=OMjdT-GfBeaemQW2o62FAw&usg=AFQjCNEnTyPEAtgN_FFHyIihljehZ3Sn4g
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CGEQFjAE&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120321/1332328633&ei=aoXST-6jEMqZmQX-_6X9Ag&usg=AFQjCNFRJ7-gS6h_kt6SVO43NA9k6N03dQ
- 1 http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFoQFjAA&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120322/1332432944&ei=JunST4T-OOOdmQWhkbnxAg&usg=AFQjCNHmrP3SgDG3G7L8QSjglwB1Kt0Vdw&sig2=Z6dxWYaTQtZXGpjGJRlgnQ
- 1 http://www.google.co.jp/url?sa=t&rct=j&q="最小の合計"+ c言語&source=web&cd=4&ved=0CGYQFjAD&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/?of=70&ei=b1XTT-y0HZDKmAXJq_WEAw&usg=AFQjCNGhQWmR97WCD8294tQ7EezbjqYG5A
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CFoQFjAC&url=https://topcoder-g-hatena-ne-jp.jag-icpc.org/firewood/20120603/1338733835&ei=GE_UT_nBEKnZmAX8ouX8Ag&usg=AFQjCNFjQXSs4-QkiMeh8sw1uLUx6gZRXA&sig2=bR9F8V1vDeREwnoNEVYQqA