2011-09-14から1日間の記事一覧

SRM518 Div2 Easy(250) TwiceString

TwiceString #include <string> using namespace std; class TwiceString{public: string getShortest( string s ) { int n = (int)s.size(); for ( int i=1; i<=n; i++ ) if ( s.substr(i)==s.substr(0,n-i) ) return s + s.substr(n-i); }};</string>

SRM518 Div1 Medium(500) ConvexSequence

ConvexSequence両隣の数より大きい数があれば小さくしていく。最大値が109だけど、1ずつ小さくなっていくというようなことはないので、TLEはしない。 #include <string> #include <vector> using namespace std; class ConvexSequence{public: long long getMinimum( vector <int></int></vector></string>…

SRM518 Div1 Easy(250), Div2 Medium(500) LargestSubsequence

LargestSubsequence最大の文字を加えていく。最大の文字は最左のものを選び、次の文字は最初に選んだ文字より右のものから選ぶ。 #include <string> #include <algorithm> using namespace std; class LargestSubsequence{public: string getLargest( string s ) { int n = (int</algorithm></string>…

SRM518

Easy (250) 245.15 Medium (600) 317.88 Hard (1000) 0 Challenge 0 結果 196位 2048→2050とても簡単だった。簡単すぎて何か罠があるんだろうと、なかなかサブミットできなかったorz 現実の問題で解く前に難易度が分かるなんてことはないわけで、偶には点数…

SRM518 Div2 Hard(1000) CoinReversing

CoinReversingコインが表でも裏でも裏返る確率はa[i]/N。現在の表の枚数の期待値に、裏のコインが表になる期待値を足し、表のコインが裏になる期待値を引けば、次の表のコインの枚数の期待値が求まる。 #include <vector> using namespace std; class CoinReversing{</vector>…